{
 "summary": {
  "built": "2026-11-14T08:34:50.221Z",
  "total": 281,
  "rows": 264,
  "live": {
   "rows": 264,
   "build": 251,
   "owner": 11,
   "omar": 2
  },
  "inScope": 248,
  "notCounted": 7,
  "outOnPurpose": 2,
  "notAppWork": 5,
  "buildTotal": 255,
  "walkthrough": 141,
  "appRows": 105,
  "agentsTotal": 9,
  "pages": 42,
  "actions": 63,
  "done": 162,
  "part": 44,
  "open": 42,
  "buildPct": 74,
  "golivePct": 9,
  "goliveDone": 1,
  "goliveSteps": 11,
  "aliAsked": 25,
  "aliAskedDone": 7,
  "aliAskedPart": 7,
  "ownerTasks": 19,
  "ownerDone": 0,
  "omarTasks": 7,
  "omarDone": 1,
  "omarPart": 1,
  "agentsBuilt": 7,
  "portal": {
   "live": "makki-portal-v43-wb4",
   "local": "makki-portal-v43-wb4",
   "current": true,
   "mode": "publish"
  },
  "status5": {
   "completed": 171,
   "not-done": 28,
   "needs-omar": 1,
   "needs-ali": 49,
   "needs-both": 12,
   "declined": 3,
   "total": 264
  },
  "tally": {
   "completed": 243,
   "notDone": 116,
   "needsOmar": 66,
   "needsAli": 124,
   "needsBoth": 16,
   "declined": 1
  },
  "tallyLine": "Completed 243 / Not done 116 / Needs Omar 66 · Needs Ali 124 · Needs both 16 · Declined 1",
  "trackerRows": 566,
  "finalReview": {
   "ruled": 1,
   "notYetReviewed": 263,
   "trackerRuled": 11
  },
  "necessity": {
   "needed-for-demo": 63,
   "needed-for-launch": 27,
   "optional": 0,
   "dropped": 3,
   "proposed": 0
  },
  "questions": 26,
  "questionsFallback": 0,
  "rq": 0,
  "questionArchive": 17,
  "decided": 44,
  "decidedIds": [
   "O3",
   "O-JOBS",
   "D06",
   "F52",
   "F53",
   "F56",
   "M-DOC",
   "M-DRAW",
   "O5",
   "GL-072",
   "F02",
   "V14·codex",
   "M-DASH",
   "O1",
   "O4",
   "GL-065",
   "GL-037",
   "V36·codex",
   "M-MULTI",
   "V41·codex",
   "M-ACK",
   "GL-043",
   "GL-073",
   "O-DECISIONS",
   "O-QUALITY",
   "M-FEED",
   "RQ-01",
   "RQ-02",
   "F32",
   "F33",
   "F55",
   "V20·codex",
   "V23·codex",
   "V48·codex",
   "V56·codex",
   "M-ONB",
   "M-TRAIN",
   "GL-024",
   "GL-076",
   "O-INSTALL",
   "O-UPDATE",
   "R03",
   "R22",
   "ali-telegram"
  ],
  "necessity563": {
   "tagged": 566,
   "of": 566,
   "notCompleted": 323,
   "completed": 243,
   "exempt": 0,
   "archivedOutside": 49
  },
  "necessityLine": "Necessity review: 323 not-Completed rows of 566 canonical rows carry a necessity tag with a dated source — Completed 243, tagged as well (no exemption) — the not-Completed 323: Needed for the demo 223 · Needed for launch 95 · Optional 4 · Dropped 1 · Proposed 0 — the Completed 243: Needed for the demo 230 · Needed for launch 13 · Optional 0 · Dropped 0 · Proposed 0 — all 566 live rows: Needed for the demo 453 · Needed for launch 108 · Optional 4 · Dropped 1 · Proposed 0; 49 archived rows sit outside the count",
  "waitingOnOmar": {
   "omarTasks": 2,
   "trackerOmar": 66,
   "trackerBoth": 16
  },
  "archive": 49,
  "excludedByArchiveRule": {
   "n": 20,
   "ids": [
    "V82",
    "V123",
    "V130",
    "V134",
    "V135",
    "V140",
    "V141",
    "O2",
    "O3",
    "O5",
    "O6",
    "O7",
    "The owner 3",
    "The owner 10",
    "The owner 11",
    "The owner 12",
    "The owner 14",
    "The owner 15",
    "The owner 16",
    "The owner 18"
   ],
   "rule": "the review delta (items 2 and 3): a merged, removed or cancelled-excluded master-list row is history — rendered under the archive with its reason and dated ruling, in no count, queue or question; a merged row the master list has as done stays as Completed"
  },
  "queues": {
   "omar": 66,
   "ali": 124,
   "both": 16,
   "inclusive": {
    "omar": 82,
    "ali": 140,
    "shared": 16
   },
   "words": "three exclusive queues, one queue each — a row carries one owner field, so it sits in exactly one of Omar's, the owner's or both's and the three never overlap; the inclusive reading counts the shared rows on both sides; the rows' own owner field after the dated decisions on record are applied, the canonical field's queue printed beside"
  },
  "workSplit": {
   "completed": 243,
   "notDone": 116,
   "needsOmar": 66,
   "needsAli": 124,
   "needsBoth": 16,
   "omarTotal": 82,
   "aliTotal": 140,
   "shared": 16,
   "trackerWideNotDone": 116,
   "aiRemaining": 195,
   "aiTotal": 436,
   "aiRemainingNotDone": 95,
   "aiRemainingInputDependent": 100,
   "rule": "waiting on Omar = Needs Omar + Needs both; waiting on the owner = Needs Ali + Needs both; shared = Needs both (counted on both sides); the hive's own remaining work = the remainder of the AI-executable set against that set's own denominator, split into the rows it can finish on demo data and the rows waiting on an answer; the tracker-wide Not done is a separate partition figure over every live row and is never that remainder; Completed = reported finished on demo data, the shared and input rows included — never AI-only; the final-review counts in the method block are a separate reading and never a completion figure",
   "words": "Who the remaining work waits on: waiting on Omar 82 (66 his alone + 16 shared) · waiting on the owner 140 (124 his alone + 16 shared) · AI work remaining 195 of 436 — the AI-executable set against its own denominator, 95 Not done plus 100 waiting on an answer · Completed 243 — finished on demo data, the shared and input rows counted there too, never AI-only work · Tracker-wide Not done 116 — every live row that waits on nobody's word, counted over all 566 live rows and never the figure above"
  },
  "groups": {
   "n": 11,
   "rule": "v2.2.0 — the default view groups the rows by the plan area of each row's canonical card (tracker.json projectPlan.cards, areaTitle verbatim from the plan document); a row with no canonical row groups under its Master List category; every row in exactly one group, the group counts sum to the rows, the six totals above are the tracker's and do not move",
   "byArea": 261,
   "byCat": [
    {
     "id": "V127",
     "cat": "The owner's own asks"
    },
    {
     "id": "ali-telegram",
     "cat": "Owner: send us"
    },
    {
     "id": "The owner 19",
     "cat": "Owner: send us"
    }
   ]
  },
  "functional": {
   "rule": "its own field, never the status word: working = a review on evidence ruled on the row on the release the live host carries; failing = a dated known-failure source on the row or its canonical row (it reads Not done); unknown = the live release has not been tested for this row (an older ruling stays the final-review detail)",
   "words": [
    "working",
    "failing",
    "unknown"
   ],
   "liveTag": "makki-portal-v43-wb4",
   "counts": {
    "working": 0,
    "failing": 0,
    "unknown": 264
   },
   "ruledOnAnEarlierRelease": [
    {
     "id": "P19",
     "tag": "makki-portal-v39-od1",
     "date": "25 October 2026",
     "evidence": "hive/checks/2026-10-25_workflows-b1.r1c.grade.md"
    }
   ]
  },
  "answerStates": {
   "rule": "per answer version (the hash of its text and choice): Saved on this device → Copied — paste and send to Makki (after Copy all answers; never Sent or Received without a readable matching receipt) → Received by Makki (a receipt {key, hash, at} for that exact version) → Applied (a dated canonical source naming the question); an edit after a receipt starts a new unsent version and keeps the received one in the history",
   "words": [
    "Saved on this device",
    "Copied — paste and send to Makki",
    "Received by Makki",
    "Applied"
   ],
   "honestLine": "Makki has not confirmed receipt of this version",
   "receipts": 0,
   "appliedAnswers": 0
  },
  "liveAvailability": {
   "rule": "its own field, read from the live tag this build read: a Completed row is on the live build when this build's app tag and the live host's tag agree; not read when the live tag could not be read",
   "words": {
    "live": "on the live build",
    "not-live": "not on the live build",
    "not-read": "live not read"
   },
   "read": true,
   "counts": {
    "live": 171,
    "not-live": 93,
    "not-read": 0
   }
  }
 },
 "statusWords": {
  "rule": "owner field first (waiting on Omar / the owner / Both → Needs Omar / Needs Ali / Needs both), else canonical complete or review = Completed, else Not done; Omar's portal row by its own live read, his other decisions Needs Omar, the owner's asks Needs Ali until done; a Checker ruling is the final-review detail, never a status (Omar 2026-11-07 03:07Z, Telegram 2085)",
  "keys": [
   "completed",
   "not-done",
   "needs-omar",
   "needs-ali",
   "needs-both",
   "declined"
  ],
  "words": {
   "completed": "Completed",
   "not-done": "Not done",
   "needs-omar": "Needs Omar",
   "needs-ali": "Needs Ali",
   "needs-both": "Needs both",
   "declined": "Declined"
  },
  "necessity": {
   "needed-for-demo": "Needed for the demo",
   "needed-for-launch": "Needed for launch",
   "optional": "Optional",
   "dropped": "Dropped",
   "proposed": "Proposed (no source names it)"
  },
  "plainWords": {
   "rule": "every live row carries plainTitle (under 90 characters), outcome and next (under 160 each) in plain words, derived from its own status word, canonical state, owner field, dated decision and final-review ruling; stamps, codes, paths, build names and seat names stay in the row's details (Omar 2026-11-07 17:06Z, Telegram 2174)",
   "caps": {
    "title": 90,
    "outcome": 160,
    "next": 160
   }
  }
 },
 "golive": [
  {
   "title": "Latest app build on the portal link",
   "score": 1,
   "status": "done"
  },
  {
   "title": "QuickBooks Online connected",
   "score": 0,
   "status": "open"
  },
  {
   "title": "Crew list in, tickets real",
   "score": 0,
   "status": "open"
  },
  {
   "title": "Equipment list in",
   "score": 0,
   "status": "open"
  },
  {
   "title": "Texting number bought and wordings OK'd",
   "score": 0,
   "status": "open"
  },
  {
   "title": "Abatement forms in and built",
   "score": 0,
   "status": "open"
  },
  {
   "title": "OHS documents in, safety library real",
   "score": 0,
   "status": "open"
  },
  {
   "title": "Past quotes in, Estimator built",
   "score": 0,
   "status": "open"
  },
  {
   "title": "Hosting decided, Makki address",
   "score": 0,
   "status": "open"
  },
  {
   "title": "Owner on the text line",
   "score": 0,
   "status": "declined",
   "declined": {
    "at": "2026-10-03T00:31Z",
    "words": "6. Forget that",
    "note": "declined: the owner is not being added to this line, so this step is not an open requirement",
    "source": "Omar 2026-10-03 00:31 UTC \"6. Forget that\" — Ask 6, the owner's Telegram id (vault/topics/people/Omar.md)"
   },
   "statusFromRows": "open"
  },
  {
   "title": "Demo data out, DEMO header off",
   "score": 0,
   "status": "open"
  }
 ],
 "tasks": [
  {
   "id": "V1",
   "whose": "build",
   "part": "walkthrough",
   "cat": "Logins & who sees what",
   "title": "Log in to one platform that holds the business",
   "status": "done",
   "ask": "Fieldflo showed",
   "askKind": "shown",
   "source": "@2:37",
   "lands": "1",
   "note": "",
   "needs": "",
   "link": "",
   "key": "V1",
   "mapVia": "own id",
   "status5": "completed",
   "status5Via": "canonical V1: state complete, waiting on none",
   "status5Word": "Completed",
   "canonicalId": "V1",
   "canonicalState": "complete",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "plainTitle": "Log in to one platform that holds the business",
   "outcome": "Completed on demo data: built, recorded finished in the task accounting of 31 October 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come.",
   "group": "area-mgmt",
   "groupName": "Management (owner · PM · lead)",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "id": "V2",
   "whose": "build",
   "part": "walkthrough",
   "cat": "Logins & who sees what",
   "title": "Your own logo and branding on it — \"wherever you see Fieldflo, just imagine your logo\"",
   "status": "done",
   "ask": "Fieldflo showed",
   "askKind": "shown",
   "source": "@2:37",
   "lands": "every page",
   "note": "black + gold, Makki's logo",
   "needs": "",
   "link": "",
   "key": "V2",
   "mapVia": "own id",
   "status5": "completed",
   "status5Via": "canonical V2: state complete, waiting on none",
   "status5Word": "Completed",
   "canonicalId": "V2",
   "canonicalState": "complete",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "plainTitle": "Your own logo and branding on it — \"wherever you see Fieldflo, just imagine your logo\"",
   "outcome": "Completed on demo data: built, recorded finished in the task accounting of 31 October 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come.",
   "group": "area-office",
   "groupName": "Office / Admin / Helpers",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "id": "V3",
   "whose": "build",
   "part": "walkthrough",
   "cat": "Logins & who sees what",
   "title": "Everything built on role and permission; access restricted to every part of the platform",
   "status": "done",
   "ask": "Fieldflo showed",
   "askKind": "shown",
   "source": "@2:37, @3:40",
   "lands": "1, 12, and the projections behind all 42",
   "note": "a forbidden field is not on the object the role receives",
   "needs": "",
   "link": "",
   "key": "V3",
   "mapVia": "own id",
   "status5": "completed",
   "status5Via": "canonical V3: state complete, waiting on none",
   "status5Word": "Completed",
   "canonicalId": "V3",
   "canonicalState": "complete",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "plainTitle": "Everything built on role and permission; access restricted to every part of the platform",
   "outcome": "Completed on demo data: built, recorded finished in the task accounting of 31 October 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come.",
   "group": "area-mgmt",
   "groupName": "Management (owner · PM · lead)",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "id": "V4",
   "whose": "build",
   "part": "walkthrough",
   "cat": "Logins & who sees what",
   "title": "Daily labourers verify time and safety but never log into the platform",
   "status": "open",
   "ask": "Fieldflo showed",
   "askKind": "shown",
   "source": "@2:37",
   "lands": "",
   "note": "our labourer has a login (page 37–40); text-only is planned, not built",
   "needs": "Waits on the texting number (the owner says yes, Omar buys it) and the crew's mobiles",
   "link": "ali-textnumber",
   "key": "V4",
   "mapVia": "own id",
   "status5": "needs-both",
   "status5Via": "canonical V4: state blocked, waiting on Both",
   "status5Word": "Needs both",
   "canonicalId": "V4",
   "canonicalState": "blocked",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "necessity": "needed-for-launch",
   "necessitySource": "plan v0.2 (materials/handoff/2026-10-31_0102_audit-v2.4/DRAFT_MAKKI_PROJECT_PLAN_2026-10-31_v0.2.md, generated 2026-10-31): card office-textline \"The labourer text line (verify by text, no login)\" on finish line 2",
   "necessityVia": "the canonical row V4's tag (tracker.json, reconciled over all 566 live rows)",
   "necessityWord": "Needed for launch",
   "plainTitle": "Daily labourers verify time and safety but never log into the platform",
   "outcome": "Needs both Omar and the owner — not started; a joint word closes it.",
   "next": "Waits on the texting number (the owner says yes, Omar buys it) and the crew's mobiles",
   "group": "area-office",
   "groupName": "Office / Admin / Helpers",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "not-live",
   "liveWord": "not on the live build"
  },
  {
   "id": "V5",
   "whose": "build",
   "part": "walkthrough",
   "cat": "Logins & who sees what",
   "title": "Open a person, tick the tabs they may see — the accountant given payroll only",
   "status": "done",
   "ask": "The owner liked it: \"Okay. Wow.\" @8:52",
   "askKind": "liked",
   "source": "@8:30",
   "lands": "12",
   "note": "",
   "needs": "",
   "link": "",
   "key": "V5",
   "mapVia": "own id",
   "status5": "completed",
   "status5Via": "canonical V5: state complete, waiting on none",
   "status5Word": "Completed",
   "canonicalId": "V5",
   "canonicalState": "complete",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "plainTitle": "Open a person, tick the tabs they may see — the accountant given payroll only",
   "outcome": "Completed on demo data: built, recorded finished in the task accounting of 31 October 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come.",
   "group": "area-mgmt",
   "groupName": "Management (owner · PM · lead)",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "id": "V6",
   "whose": "build",
   "part": "walkthrough",
   "cat": "Logins & who sees what",
   "title": "A foreman limited to view projects, add forms, take pictures",
   "status": "done",
   "ask": "The owner confirmed",
   "askKind": "asked",
   "source": "@8:54; Owner: \"That's pretty much it.\" @9:24",
   "lands": "27–36",
   "note": "he has 10 tabs, no profit, no margin, no other crew",
   "needs": "",
   "link": "",
   "key": "V6",
   "mapVia": "own id",
   "status5": "completed",
   "status5Via": "canonical V6: state complete, waiting on none",
   "status5Word": "Completed",
   "canonicalId": "V6",
   "canonicalState": "complete",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "plainTitle": "A foreman limited to view projects, add forms, take pictures",
   "outcome": "Completed on demo data: built, recorded finished in the task accounting of 31 October 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come.",
   "group": "area-mgmt",
   "groupName": "Management (owner · PM · lead)",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "id": "V7",
   "whose": "build",
   "part": "walkthrough",
   "cat": "Logins & who sees what",
   "title": "Each employee sent his own approval by text: his time and hours for the day and the week, \"Were you injured? Does everything look good?\"",
   "status": "part",
   "ask": "Fieldflo showed",
   "askKind": "shown",
   "source": "@9:40",
   "lands": "38 (in-app)",
   "note": "the question is on his End of Day tab; it is not texted, and the weekly total is not in it",
   "needs": "Waits on the texting number (the owner says yes, Omar buys it) and the crew's mobiles",
   "link": "ali-textnumber",
   "key": "V7",
   "mapVia": "own id",
   "status5": "needs-both",
   "status5Via": "canonical V7: state partial, waiting on Both",
   "status5Word": "Needs both",
   "canonicalId": "V7",
   "canonicalState": "partial",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "necessity": "needed-for-launch",
   "necessitySource": "plan v0.2 (materials/handoff/2026-10-31_0102_audit-v2.4/DRAFT_MAKKI_PROJECT_PLAN_2026-10-31_v0.2.md, generated 2026-10-31): card office-textline \"The labourer text line (verify by text, no login)\" on finish line 2",
   "necessityVia": "the canonical row V7's tag (tracker.json, reconciled over all 566 live rows)",
   "necessityWord": "Needed for launch",
   "plainTitle": "Each employee sent his own approval by text: his time and hours for the day and the…",
   "outcome": "Needs both Omar and the owner: this row is the end-of-day confirm itself — each man's own hours sent to him by text — and it is partly built.",
   "next": "Omar and the owner both answer the two-daily-texts question; the hours for the week are asked on their own question, not that one.",
   "readingWas": {
    "title": "Each employee sent his own approval by text: his time and hours for the day and the week, \"Were you injured? Does everything look good?\"",
    "outcome": "Needs both Omar and the owner — partly built; a joint word closes it.",
    "next": "Waits on the texting number (the owner says yes, Omar buys it) and the crew's mobiles"
   },
   "currentReading": {
    "source": "the row's own canonical title in the accounting v2.4 of 2026-10-31 — \"his time and hours for the day and the week\", sent to each man to confirm — read 2026-11-08; the same line is the scopeSource this correction already recorded for the row.",
    "why": "the row's own sentence never said which of the two daily crew texts it is, so the question that keeps it could not be read as covering it; the row is the end-of-day confirm, and the weekly total it also carries belongs to another question"
   },
   "group": "area-office",
   "groupName": "Office / Admin / Helpers",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "not-live",
   "liveWord": "not on the live build"
  },
  {
   "id": "V8",
   "whose": "build",
   "part": "walkthrough",
   "cat": "Dashboard & notifications",
   "title": "Today's active projects, coming to life as the foreman clocks his crew in",
   "status": "done",
   "ask": "The owner liked the dashboards: \"Very, very user friendly\" @10:37",
   "askKind": "liked",
   "source": "@3:40",
   "lands": "2",
   "note": "\"Who's on site today\"",
   "needs": "",
   "link": "",
   "key": "V8",
   "mapVia": "own id",
   "status5": "completed",
   "status5Via": "canonical V8: state complete, waiting on none",
   "status5Word": "Completed",
   "canonicalId": "V8",
   "canonicalState": "complete",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "plainTitle": "Today's active projects, coming to life as the foreman clocks his crew",
   "outcome": "Completed on demo data: built, recorded finished in the task accounting of 31 October 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come.",
   "group": "area-mgmt",
   "groupName": "Management (owner · PM · lead)",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "id": "V9",
   "whose": "build",
   "part": "walkthrough",
   "cat": "Dashboard & notifications",
   "title": "Click into a project and audit all their paperwork from the dashboard",
   "status": "done",
   "ask": "Fieldflo showed",
   "askKind": "shown",
   "source": "@3:40",
   "lands": "2 → A20–A23",
   "note": "",
   "needs": "",
   "link": "",
   "key": "V9",
   "mapVia": "own id",
   "status5": "completed",
   "status5Via": "canonical V9: state complete, waiting on none",
   "status5Word": "Completed",
   "canonicalId": "V9",
   "canonicalState": "complete",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "plainTitle": "Click into a project and audit all their paperwork from the dashboard",
   "outcome": "Completed on demo data: built, recorded finished in the task accounting of 31 October 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come.",
   "group": "area-mgmt",
   "groupName": "Management (owner · PM · lead)",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "id": "V10",
   "whose": "build",
   "part": "walkthrough",
   "cat": "Dashboard & notifications",
   "title": "Projects over 50% on bid vs actual: cost codes, labour types, bid / actual / remaining",
   "status": "done",
   "ask": "Fieldflo showed",
   "askKind": "shown",
   "source": "@5:00",
   "lands": "2, 6, 26",
   "note": "by job and by cost code; \"labour types\" is a cost code here, not a separate axis",
   "needs": "",
   "link": "",
   "key": "V10",
   "mapVia": "own id",
   "status5": "completed",
   "status5Via": "canonical V10: state complete, waiting on none",
   "status5Word": "Completed",
   "canonicalId": "V10",
   "canonicalState": "complete",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "plainTitle": "Projects over 50% on bid vs actual: cost codes, labour types, bid / actual / remaining",
   "outcome": "Completed on demo data: built, recorded finished in the task accounting of 31 October 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come.",
   "group": "area-mgmt",
   "groupName": "Management (owner · PM · lead)",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "id": "V11",
   "whose": "build",
   "part": "walkthrough",
   "cat": "Dashboard & notifications",
   "title": "Certs flagged several ways as they get close to expiring",
   "status": "done",
   "ask": "Fieldflo showed — The owner's only words here were \"Okay.\" @5:28, not a reaction (raw-transcript pass, 2026-09-16)",
   "askKind": "shown",
   "source": "@5:00",
   "lands": "2, 13, 33, 40",
   "note": "60-day and 30-day warnings",
   "needs": "",
   "link": "",
   "key": "V11",
   "mapVia": "own id",
   "status5": "completed",
   "status5Via": "canonical V11: state complete, waiting on none",
   "status5Word": "Completed",
   "canonicalId": "V11",
   "canonicalState": "complete",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "plainTitle": "Certs flagged several ways as they get close to expiring",
   "outcome": "Completed on demo data: built, recorded finished in the task accounting of 31 October 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come.",
   "group": "area-mgmt",
   "groupName": "Management (owner · PM · lead)",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "id": "V12",
   "whose": "build",
   "part": "walkthrough",
   "cat": "Dashboard & notifications",
   "title": "Employees nearing overtime, live at 32 hours",
   "status": "done",
   "ask": "Fieldflo showed",
   "askKind": "shown",
   "source": "@5:31",
   "lands": "2, 10, 28",
   "note": "32+ and 40+",
   "needs": "",
   "link": "",
   "key": "V12",
   "mapVia": "own id",
   "status5": "completed",
   "status5Via": "canonical V12: state complete, waiting on none",
   "status5Word": "Completed",
   "canonicalId": "V12",
   "canonicalState": "complete",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "plainTitle": "Employees nearing overtime, live at 32 hours",
   "outcome": "Completed on demo data: built, recorded finished in the task accounting of 31 October 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come.",
   "group": "area-crew",
   "groupName": "Crew (the field day)",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "id": "V13",
   "whose": "build",
   "part": "walkthrough",
   "cat": "Dashboard & notifications",
   "title": "New projects on the dashboard",
   "status": "done",
   "ask": "Fieldflo showed",
   "askKind": "shown",
   "source": "@5:31",
   "lands": "2",
   "note": "Recent Jobs",
   "needs": "",
   "link": "",
   "key": "V13",
   "mapVia": "own id",
   "status5": "completed",
   "status5Via": "canonical V13: state complete, waiting on none",
   "status5Word": "Completed",
   "canonicalId": "V13",
   "canonicalState": "complete",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "plainTitle": "New projects on the dashboard",
   "outcome": "Completed on demo data: built, recorded finished in the task accounting of 31 October 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come.",
   "group": "area-mgmt",
   "groupName": "Management (owner · PM · lead)",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "id": "V14",
   "whose": "build",
   "part": "walkthrough",
   "cat": "Dashboard & notifications",
   "title": "Time and materials and change orders on the dashboard",
   "status": "done",
   "ask": "Fieldflo showed",
   "askKind": "shown",
   "source": "@5:31",
   "lands": "2, A23, A25–A27",
   "note": "",
   "needs": "",
   "link": "",
   "key": "V14",
   "mapVia": "own id",
   "status5": "completed",
   "status5Via": "canonical V14: state complete, waiting on none",
   "status5Word": "Completed",
   "canonicalId": "V14",
   "canonicalState": "complete",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "plainTitle": "Time and materials and change orders on the dashboard",
   "outcome": "Completed on demo data: built, recorded finished in the task accounting of 31 October 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come.",
   "group": "area-mgmt",
   "groupName": "Management (owner · PM · lead)",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "id": "V15",
   "whose": "build",
   "part": "walkthrough",
   "cat": "Dashboard & notifications",
   "title": "Audit all forms in one place — \"all the safety meetings across all our branches in the last month\"",
   "status": "done",
   "ask": "Fieldflo showed",
   "askKind": "shown",
   "source": "@5:31",
   "lands": "",
   "note": "2026-09-20 — Safety log — every talk and form filed on the Safety page (owner and site lead): the last 30 days of talks, seeded plus every live daily, searchable and filterable, with a forms modal listing inspections, incidents and corrective actions; safetyLogPanel / talkMonth in portal/app-notify.js",
   "needs": "",
   "link": "",
   "key": "V15",
   "mapVia": "own id",
   "status5": "completed",
   "status5Via": "canonical V15: state complete, waiting on none",
   "status5Word": "Completed",
   "canonicalId": "V15",
   "canonicalState": "complete",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "plainTitle": "Audit all forms in one place — \"all the safety meetings across all our branches in the…",
   "outcome": "Completed on demo data: built, recorded finished in the task accounting of 31 October 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come.",
   "group": "area-mgmt",
   "groupName": "Management (owner · PM · lead)",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "id": "V16",
   "whose": "build",
   "part": "walkthrough",
   "cat": "Dashboard & notifications",
   "title": "Deploy one message to the whole crew by text or email (PPE week, holiday party)",
   "status": "open",
   "ask": "Fieldflo showed",
   "askKind": "shown",
   "source": "@5:31",
   "lands": "",
   "note": "",
   "needs": "Waits on the texting number (the owner says yes, Omar buys it) and the crew's mobiles",
   "link": "ali-textnumber",
   "key": "V16",
   "mapVia": "alias, same title",
   "mapEvidence": "GL-022 lists V16 as its alias under this row's own title — canonical accounting v2.4 (materials/canonical/2026-10-31_canonical-tasks.v2.4.json, generated 2026-10-31)",
   "status5": "needs-omar",
   "status5Via": "canonical GL-022: state blocked, waiting on Omar",
   "status5Word": "Needs Omar",
   "canonicalId": "GL-022",
   "canonicalState": "blocked",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "necessity": "needed-for-launch",
   "necessitySource": "plan v0.2 (materials/handoff/2026-10-31_0102_audit-v2.4/DRAFT_MAKKI_PROJECT_PLAN_2026-10-31_v0.2.md, generated 2026-10-31): card office-msg \"Notifications, broadcasts and auto-send\" on finish line 2",
   "necessityVia": "the canonical row GL-022's tag (tracker.json, reconciled over all 566 live rows)",
   "necessityWord": "Needed for launch",
   "plainTitle": "Deploy one message to the whole crew by text or email (PPE week, holiday party)",
   "outcome": "Needs Omar: not started — it waits on his word.",
   "next": "Omar answers question 3 under What's needed from Omar on this page.",
   "group": "area-office",
   "groupName": "Office / Admin / Helpers",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "not-live",
   "liveWord": "not on the live build"
  },
  {
   "id": "V17",
   "whose": "build",
   "part": "walkthrough",
   "cat": "Dashboard & notifications",
   "title": "A map of where the projects are",
   "status": "done",
   "ask": "Fieldflo showed",
   "askKind": "shown",
   "source": "@5:31",
   "lands": "2, 17, 27, 37",
   "note": "a pin per active site, with a downtown inset",
   "needs": "",
   "link": "",
   "key": "V17",
   "mapVia": "own id",
   "status5": "completed",
   "status5Via": "canonical V17: state complete, waiting on none",
   "status5Word": "Completed",
   "canonicalId": "V17",
   "canonicalState": "complete",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "plainTitle": "A map of where the projects are",
   "outcome": "Completed on demo data: built, recorded finished in the task accounting of 31 October 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come.",
   "group": "area-mgmt",
   "groupName": "Management (owner · PM · lead)",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "id": "V18",
   "whose": "build",
   "part": "walkthrough",
   "cat": "Dashboard & notifications",
   "title": "A map of where employees clock in from",
   "status": "open",
   "ask": "Fieldflo showed",
   "askKind": "shown",
   "source": "@5:31",
   "lands": "",
   "note": "no GPS clock-in anywhere",
   "needs": "Waits on the owner's decision: track where his men clock in from?",
   "link": "ali-gps",
   "key": "V18",
   "mapVia": "own id",
   "status5": "needs-ali",
   "status5Via": "canonical V18: state blocked, waiting on the owner",
   "status5Word": "Needs Ali",
   "canonicalId": "V18",
   "canonicalState": "blocked",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "necessity": "needed-for-launch",
   "necessitySource": "plan v0.2 (materials/handoff/2026-10-31_0102_audit-v2.4/DRAFT_MAKKI_PROJECT_PLAN_2026-10-31_v0.2.md, generated 2026-10-31): card safe-privacy \"Location verification and HR privacy\" on finish line 2",
   "necessityVia": "the canonical row V18's tag (tracker.json, reconciled over all 566 live rows)",
   "necessityWord": "Needed for launch",
   "plainTitle": "A map of where employees clock in",
   "outcome": "Needs Ali: not started — it waits on the owner.",
   "next": "Waits on the owner's decision: track where his men clock in from?",
   "group": "area-safe",
   "groupName": "Safety · Tickets · People",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "not-live",
   "liveWord": "not on the live build"
  },
  {
   "id": "V19",
   "whose": "build",
   "part": "walkthrough",
   "cat": "Dashboard & notifications",
   "title": "The last injury form on the dashboard",
   "status": "done",
   "ask": "Fieldflo showed",
   "askKind": "shown",
   "source": "@5:31",
   "lands": "14, 34",
   "note": "2026-09-20 — a Last incident panel on the dashboard (owner and site lead): the latest incident with days-since-injury, days-since-any-incident and open actions; lastIncidentPanel in portal/app-notify.js, scoped through R.visibleSafety",
   "needs": "",
   "link": "",
   "key": "V19",
   "mapVia": "own id",
   "status5": "completed",
   "status5Via": "canonical V19: state complete, waiting on none",
   "status5Word": "Completed",
   "canonicalId": "V19",
   "canonicalState": "complete",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "plainTitle": "The last injury form on the dashboard",
   "outcome": "Completed on demo data: built, recorded finished in the task accounting of 31 October 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come.",
   "group": "area-mgmt",
   "groupName": "Management (owner · PM · lead)",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "id": "V20",
   "whose": "build",
   "part": "walkthrough",
   "cat": "Dashboard & notifications",
   "title": "Counts of employees, clients and users",
   "status": "done",
   "ask": "Fieldflo showed",
   "askKind": "shown",
   "source": "@5:31",
   "lands": "12, 13",
   "note": "2026-09-20 — three count tiles on the owner's dashboard — Employees (with the crew split), Clients (and how many have work on now) and Logins — each clicking through to Tickets & Certs / Jobs / Team & Access; countsPanel in portal/app-notify.js. Owner only",
   "needs": "",
   "link": "",
   "key": "V20",
   "mapVia": "own id",
   "status5": "completed",
   "status5Via": "canonical V20: state complete, waiting on none",
   "status5Word": "Completed",
   "canonicalId": "V20",
   "canonicalState": "complete",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "plainTitle": "Counts of employees, clients and users",
   "outcome": "Completed on demo data: built, recorded finished in the task accounting of 31 October 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come.",
   "group": "area-mgmt",
   "groupName": "Management (owner · PM · lead)",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "id": "V21",
   "whose": "build",
   "part": "walkthrough",
   "cat": "Dashboard & notifications",
   "title": "A safety dashboard: incidents, near miss, stop work",
   "status": "done",
   "ask": "Fieldflo showed",
   "askKind": "shown",
   "source": "@5:31",
   "lands": "14, 34",
   "note": "",
   "needs": "",
   "link": "",
   "key": "V21",
   "mapVia": "own id",
   "status5": "completed",
   "status5Via": "canonical V21: state complete, waiting on none",
   "status5Word": "Completed",
   "canonicalId": "V21",
   "canonicalState": "complete",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "plainTitle": "A safety dashboard: incidents, near miss, stop work",
   "outcome": "Completed on demo data: built, recorded finished in the task accounting of 31 October 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come.",
   "group": "area-safe",
   "groupName": "Safety · Tickets · People",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "id": "V22",
   "whose": "build",
   "part": "walkthrough",
   "cat": "Dashboard & notifications",
   "title": "An incident reporting system that walks a claim through — property damage or injury",
   "status": "part",
   "ask": "Fieldflo showed",
   "askKind": "shown",
   "source": "@5:31",
   "lands": "14, 34",
   "note": "you can file an incident; there is no claim walkthrough",
   "needs": "Nothing blocks it: the hive builds it on demo data",
   "link": "",
   "key": "V22",
   "mapVia": "own id",
   "status5": "not-done",
   "status5Via": "canonical V22: state partial, waiting on none",
   "status5Word": "Not done",
   "canonicalId": "V22",
   "canonicalState": "partial",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "necessity": "needed-for-demo",
   "necessitySource": "plan v0.2 (materials/handoff/2026-10-31_0102_audit-v2.4/DRAFT_MAKKI_PROJECT_PLAN_2026-10-31_v0.2.md, generated 2026-10-31): card safe-inc \"Incidents, inspections, corrective actions and OHS reports\" on finish line 1",
   "necessityVia": "the canonical row V22's tag (tracker.json, reconciled over all 566 live rows)",
   "necessityWord": "Needed for the demo",
   "plainTitle": "An incident reporting system that walks a claim through — property damage or injury",
   "outcome": "Not done: partly built.",
   "next": "Nothing blocks it: the hive builds it on demo data",
   "group": "area-safe",
   "groupName": "Safety · Tickets · People",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "not-live",
   "liveWord": "not on the live build"
  },
  {
   "id": "V23",
   "whose": "build",
   "part": "walkthrough",
   "cat": "Dashboard & notifications",
   "title": "Inspection management — your own or ready-made inspections",
   "status": "part",
   "ask": "Fieldflo showed",
   "askKind": "shown",
   "source": "@5:31",
   "lands": "14, 34",
   "note": "you can log an inspection with a result; there is no question-set builder and no ready-made library",
   "needs": "Nothing blocks it: the hive builds it on demo data",
   "link": "",
   "key": "V23",
   "mapVia": "own id",
   "status5": "not-done",
   "status5Via": "canonical V23: state partial, waiting on none",
   "status5Word": "Not done",
   "canonicalId": "V23",
   "coveredBy": {
    "gl": "GL-007",
    "extent": "partly",
    "source": "GO_LIVE.md row GL-007 (V23's own-or-ready-made ask) (written 2026-09-26, State re-printed 2026-10-04): Built — wave gl-wave2-forms, criteria and run 2026-09-27 (hive/checks/2026-09-27_gl-wave2-forms.md); state review in the canonical accounting v2.4 (2026-10-31)",
    "uncovered": "a library of ready-made inspections beyond the one asbestos checklist",
    "why": "GL-007 builds the builder and one asbestos-specific checklist; the ready-made library the V row names is not in it",
    "glState": "review",
    "glTitle": "Building your own inspection question sets (an inspection-template builder), and an asbestos-specific inspection checklist (manometer reading, two-stage wast…",
    "gradeFile": "hive/checks/2026-09-27_gl-wave2-forms.md",
    "accepted": false
   },
   "canonicalState": "partial",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "necessity": "needed-for-demo",
   "necessitySource": "plan v0.2 (materials/handoff/2026-10-31_0102_audit-v2.4/DRAFT_MAKKI_PROJECT_PLAN_2026-10-31_v0.2.md, generated 2026-10-31): card safe-inc \"Incidents, inspections, corrective actions and OHS reports\" on finish line 1",
   "necessityVia": "the canonical row V23's tag (tracker.json, reconciled over all 566 live rows)",
   "necessityWord": "Needed for the demo",
   "plainTitle": "Inspection management — your own or ready-made inspections",
   "outcome": "Not done: built in part under a later row; what remains: a library of ready-made inspections beyond the one asbestos checklist.",
   "next": "Next: a library of ready-made inspections beyond the one asbestos checklist.",
   "group": "area-safe",
   "groupName": "Safety · Tickets · People",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "not-live",
   "liveWord": "not on the live build"
  },
  {
   "id": "V24",
   "whose": "build",
   "part": "walkthrough",
   "cat": "Dashboard & notifications",
   "title": "A failed item assigned as a corrective action to a person; \"they'll remain on this board until they fix it\"",
   "status": "done",
   "ask": "Fieldflo showed",
   "askKind": "shown",
   "source": "@5:31, @27:47",
   "lands": "14, 34, A48",
   "note": "overdue goes red, closed ones stay on file",
   "needs": "",
   "link": "",
   "key": "V24",
   "mapVia": "own id",
   "status5": "completed",
   "status5Via": "canonical V24: state complete, waiting on none",
   "status5Word": "Completed",
   "canonicalId": "V24",
   "canonicalState": "complete",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "plainTitle": "A failed item assigned as a corrective action to a person; \"they'll remain on this board…",
   "outcome": "Completed on demo data: built, recorded finished in the task accounting of 31 October 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come.",
   "group": "area-safe",
   "groupName": "Safety · Tickets · People",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "id": "V25",
   "whose": "build",
   "part": "walkthrough",
   "cat": "Dashboard & notifications",
   "title": "Reports and stats for OSHA",
   "status": "open",
   "ask": "Fieldflo showed",
   "askKind": "shown",
   "source": "@5:31",
   "lands": "",
   "note": "and Fieldflo is US-built; nothing on the call covered Alberta OHS",
   "needs": "Waits on Owner: his OHS documents (JHAs, SWPs, toolbox talks)",
   "link": "ali-ohs",
   "key": "V25",
   "mapVia": "own id",
   "status5": "needs-ali",
   "status5Via": "canonical V25: state blocked, waiting on the owner",
   "status5Word": "Needs Ali",
   "canonicalId": "V25",
   "canonicalState": "blocked",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "necessity": "needed-for-demo",
   "necessitySource": "plan v0.2 (materials/handoff/2026-10-31_0102_audit-v2.4/DRAFT_MAKKI_PROJECT_PLAN_2026-10-31_v0.2.md, generated 2026-10-31): card safe-inc \"Incidents, inspections, corrective actions and OHS reports\" on finish line 1",
   "necessityVia": "the canonical row V25's tag (tracker.json, reconciled over all 566 live rows)",
   "necessityWord": "Needed for the demo",
   "plainTitle": "Reports and stats for OSHA",
   "outcome": "Needs Ali: not started — it waits on the owner.",
   "next": "Waits on Owner: his OHS documents (JHAs, SWPs, toolbox talks)",
   "group": "area-safe",
   "groupName": "Safety · Tickets · People",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "not-live",
   "liveWord": "not on the live build"
  },
  {
   "id": "V26",
   "whose": "build",
   "part": "walkthrough",
   "cat": "Dashboard & notifications",
   "title": "An equipment dashboard: maintenance, corrective actions on assets, inspections due, rentals to call off, what is assigned where",
   "status": "part",
   "ask": "Fieldflo showed — The owner said nothing at @5:31. The \"That's great.\" @21:20 this row used to carry belongs to V64 (raw-transcript pass, 2026-09-16)",
   "askKind": "shown",
   "source": "@5:31",
   "lands": "15, 35",
   "note": "reminders, inspections due, rentals, and where each asset is; no maintenance history and no corrective action on an asset",
   "needs": "Nothing blocks it: the hive builds it on demo data",
   "link": "",
   "key": "V26",
   "mapVia": "own id",
   "status5": "not-done",
   "status5Via": "canonical V26: state partial, waiting on none",
   "status5Word": "Not done",
   "canonicalId": "V26",
   "canonicalState": "partial",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "necessity": "needed-for-demo",
   "necessitySource": "plan v0.2 (materials/handoff/2026-10-31_0102_audit-v2.4/DRAFT_MAKKI_PROJECT_PLAN_2026-10-31_v0.2.md, generated 2026-10-31): card gear-assets \"Equipment records, maintenance, inspections and the equipment map\" on finish line 1",
   "necessityVia": "the canonical row V26's tag (tracker.json, reconciled over all 566 live rows)",
   "necessityWord": "Needed for the demo",
   "plainTitle": "An equipment dashboard: maintenance, corrective actions on assets, inspections due…",
   "outcome": "Not done: partly built.",
   "next": "Nothing blocks it: the hive builds it on demo data",
   "group": "area-gear",
   "groupName": "Equipment / QR / Inventory",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "not-live",
   "liveWord": "not on the live build"
  },
  {
   "id": "V27",
   "whose": "build",
   "part": "walkthrough",
   "cat": "Dashboard & notifications",
   "title": "A CRM: reach-outs, job walks, proposals sent, won / lost",
   "status": "part",
   "ask": "The owner cut into this pitch to ask for QuickBooks @8:00",
   "askKind": "liked",
   "source": "@5:31",
   "lands": "3, 23, 24",
   "note": "proposals sent and won/lost are there; no contacts, no reach-outs, no job walks",
   "needs": "Waits on the owner's decision: does he want a CRM?",
   "link": "ali-crm",
   "key": "V27",
   "mapVia": "own id",
   "status5": "needs-ali",
   "status5Via": "canonical V27: state partial, waiting on the owner",
   "status5Word": "Needs Ali",
   "canonicalId": "V27",
   "canonicalState": "partial",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "necessity": "needed-for-demo",
   "necessitySource": "plan v0.2 (materials/handoff/2026-10-31_0102_audit-v2.4/DRAFT_MAKKI_PROJECT_PLAN_2026-10-31_v0.2.md, generated 2026-10-31): card sales-crm \"CRM: contacts, follow-ups and estimator reporting\" on finish line 1",
   "necessityVia": "the canonical row V27's tag (tracker.json, reconciled over all 566 live rows)",
   "necessityWord": "Needed for the demo",
   "plainTitle": "A CRM: reach-outs, job walks, proposals sent, won / lost",
   "outcome": "Needs Ali: partly built — it waits on the owner.",
   "next": "Waits on the owner's decision: does he want a CRM?",
   "group": "area-sales",
   "groupName": "Sales / Estimating",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "not-live",
   "liveWord": "not on the live build"
  },
  {
   "id": "V28",
   "whose": "build",
   "part": "walkthrough",
   "cat": "Dashboard & notifications",
   "title": "A notification digest daily, twice a day if there are night shifts",
   "status": "done",
   "ask": "Fieldflo showed",
   "askKind": "shown",
   "source": "@10:42",
   "lands": "— (text line A61, A63)",
   "note": "2026-09-20 — Today's digest on the owner's and the lead's dashboard, with two editions (05:30 night hand-over + 17:00 end of day) on a day that has a night shift on the board and one on a day that does not; editions / nightShifts / digestPanel in portal/app-notify.js. The times are labels — nothing is scheduled and nothing sends",
   "needs": "",
   "link": "",
   "key": "V28",
   "mapVia": "own id",
   "status5": "completed",
   "status5Via": "canonical V28: state complete, waiting on none",
   "status5Word": "Completed",
   "canonicalId": "V28",
   "canonicalState": "complete",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "plainTitle": "A notification digest daily, twice a day if there are night shifts",
   "outcome": "Completed on demo data: built, recorded finished in the task accounting of 31 October 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come.",
   "group": "area-office",
   "groupName": "Office / Admin / Helpers",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "id": "V29",
   "whose": "build",
   "part": "walkthrough",
   "cat": "Dashboard & notifications",
   "title": "Instant notifications: property damage, injury, change order, no access",
   "status": "part",
   "ask": "Fieldflo showed",
   "askKind": "shown",
   "source": "@10:42",
   "lands": "A4",
   "note": "2026-09-20 — the bell is now a live bus (window.MAKKI_NOTIFY.fire, store makki_demo_notices_v1, scan() re-run after every click) and injury, property damage and no-access fire off the real records — the Safety incident form and the foreman's Start Day notes. portal/app-notify.js. The fourth kind is broken: app-ops2.js stores a change order's status as an object, app-notify.js:163 reads it as a string, so a CO notice renders [object Object] and only the first status move on each CO ever fires. Also: every audience is [\"owner\",\"lead\"], so a crew login still sees the old hard-coded bell lines",
   "needs": "Nothing blocks it: the hive builds it on demo data",
   "link": "",
   "key": "V29",
   "mapVia": "own id",
   "status5": "not-done",
   "status5Via": "canonical V29: state partial, waiting on none",
   "status5Word": "Not done",
   "canonicalId": "V29",
   "canonicalState": "partial",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "necessity": "needed-for-launch",
   "necessitySource": "plan v0.2 (materials/handoff/2026-10-31_0102_audit-v2.4/DRAFT_MAKKI_PROJECT_PLAN_2026-10-31_v0.2.md, generated 2026-10-31): card office-msg \"Notifications, broadcasts and auto-send\" on finish line 2",
   "necessityVia": "the canonical row V29's tag (tracker.json, reconciled over all 566 live rows)",
   "necessityWord": "Needed for launch",
   "plainTitle": "Instant notifications: property damage, injury, change order, no access",
   "outcome": "Not done: partly built.",
   "next": "Nothing blocks it: the hive builds it on demo data",
   "group": "area-office",
   "groupName": "Office / Admin / Helpers",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "not-live",
   "liveWord": "not on the live build"
  },
  {
   "id": "V30",
   "whose": "build",
   "part": "walkthrough",
   "cat": "Dashboard & notifications",
   "title": "What the digest carries: certs near expiry with a link, permits near expiry, who is not doing paperwork correctly, warehouse orders pending, low inventory, scheduling conflicts",
   "status": "done",
   "ask": "Fieldflo showed",
   "askKind": "shown",
   "source": "@10:42",
   "lands": "13, 6, 16",
   "note": "2026-09-20 — all six sections are in the digest and each has real rows and its own link: tickets near expiry (link to Tickets & Certs / My Crew), permits near expiry, paperwork not done (five derived gap types), warehouse orders pending with a late flag, low stock, and scheduling conflicts (five derived clash types over the next 14 days); digest() in portal/app-notify.js",
   "needs": "",
   "link": "",
   "key": "V30",
   "mapVia": "own id",
   "status5": "completed",
   "status5Via": "canonical V30: state complete, waiting on none",
   "status5Word": "Completed",
   "canonicalId": "V30",
   "canonicalState": "complete",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "plainTitle": "What the digest carries: certs near expiry with a link, permits near expiry, who is not…",
   "outcome": "Completed on demo data: built, recorded finished in the task accounting of 31 October 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come.",
   "group": "area-office",
   "groupName": "Office / Admin / Helpers",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "id": "V31",
   "whose": "build",
   "part": "walkthrough",
   "cat": "Dashboard & notifications",
   "title": "Send each employee his own schedule to his cell or email",
   "status": "part",
   "ask": "Fieldflo showed",
   "askKind": "shown",
   "source": "@10:42, @34:47, @36:37",
   "lands": "39, A38",
   "note": "his week is on his own login; the board previews the message and sends nothing",
   "needs": "Waits on the texting number (the owner says yes, Omar buys it) and the crew's mobiles",
   "link": "ali-textnumber",
   "key": "V31",
   "mapVia": "own id",
   "status5": "needs-both",
   "status5Via": "canonical V31: state partial, waiting on Both",
   "status5Word": "Needs both",
   "canonicalId": "V31",
   "canonicalState": "partial",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "necessity": "needed-for-launch",
   "necessitySource": "plan v0.2 (materials/handoff/2026-10-31_0102_audit-v2.4/DRAFT_MAKKI_PROJECT_PLAN_2026-10-31_v0.2.md, generated 2026-10-31): card office-msg \"Notifications, broadcasts and auto-send\" on finish line 2",
   "necessityVia": "the canonical row V31's tag (tracker.json, reconciled over all 566 live rows)",
   "necessityWord": "Needed for launch",
   "plainTitle": "Send each employee his own schedule to his cell or email",
   "outcome": "Needs both Omar and the owner — partly built; a joint word closes it.",
   "next": "Waits on the texting number (the owner says yes, Omar buys it) and the crew's mobiles",
   "group": "area-office",
   "groupName": "Office / Admin / Helpers",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "not-live",
   "liveWord": "not on the live build"
  },
  {
   "id": "V32",
   "whose": "build",
   "part": "walkthrough",
   "cat": "QuickBooks & setting up people",
   "title": "Connect to QuickBooks — Online",
   "status": "open",
   "ask": "The owner asked — his first unprompted words to Dan",
   "askKind": "asked",
   "source": "@8:00, @8:09, @12:47",
   "lands": "11",
   "note": "page 11 is the settings page the link will live on",
   "needs": "Waits on Owner: fifteen minutes on QuickBooks Online",
   "link": "ali-quickbooks",
   "key": "V32",
   "mapVia": "own id",
   "status5": "needs-ali",
   "status5Via": "canonical V32: state blocked, waiting on the owner",
   "status5Word": "Needs Ali",
   "canonicalId": "V32",
   "canonicalState": "blocked",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "necessity": "needed-for-launch",
   "necessitySource": "plan v0.2 (materials/handoff/2026-10-31_0102_audit-v2.4/DRAFT_MAKKI_PROJECT_PLAN_2026-10-31_v0.2.md, generated 2026-10-31): card fin-qbo \"QuickBooks Online connection, first import and The Books\" on finish line 2",
   "necessityVia": "the canonical row V32's tag (tracker.json, reconciled over all 566 live rows)",
   "necessityWord": "Needed for launch",
   "plainTitle": "Connect to QuickBooks — Online",
   "outcome": "Needs Ali: not started — it waits on the owner.",
   "next": "Waits on Owner: fifteen minutes on QuickBooks Online",
   "group": "area-fin",
   "groupName": "Finance / QuickBooks",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "not-live",
   "liveWord": "not on the live build"
  },
  {
   "id": "V33",
   "whose": "build",
   "part": "walkthrough",
   "cat": "QuickBooks & setting up people",
   "title": "The integration brings the employees across, so there is no duplicate entry",
   "status": "open",
   "ask": "The owner asked (same ask)",
   "askKind": "asked",
   "source": "@12:48",
   "lands": "11",
   "note": "",
   "needs": "Waits on Owner: fifteen minutes on QuickBooks Online",
   "link": "ali-quickbooks",
   "key": "V33",
   "mapVia": "own id",
   "status5": "needs-ali",
   "status5Via": "canonical V33: state blocked, waiting on the owner",
   "status5Word": "Needs Ali",
   "canonicalId": "V33",
   "canonicalState": "blocked",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "necessity": "needed-for-launch",
   "necessitySource": "plan v0.2 (materials/handoff/2026-10-31_0102_audit-v2.4/DRAFT_MAKKI_PROJECT_PLAN_2026-10-31_v0.2.md, generated 2026-10-31): card fin-qbo \"QuickBooks Online connection, first import and The Books\" on finish line 2",
   "necessityVia": "the canonical row V33's tag (tracker.json, reconciled over all 566 live rows)",
   "necessityWord": "Needed for launch",
   "plainTitle": "The integration brings the employees across, so there is no duplicate entry",
   "outcome": "Needs Ali: not started — it waits on the owner.",
   "next": "Waits on Owner: fifteen minutes on QuickBooks Online",
   "group": "area-fin",
   "groupName": "Finance / QuickBooks",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "not-live",
   "liveWord": "not on the live build"
  },
  {
   "id": "V34",
   "whose": "build",
   "part": "walkthrough",
   "cat": "QuickBooks & setting up people",
   "title": "Then click each employee to update their information",
   "status": "part",
   "ask": "Fieldflo showed",
   "askKind": "shown",
   "source": "@12:48",
   "lands": "12, 13",
   "note": "you can add and edit a team login and open a man's file; you cannot edit a man's record",
   "needs": "The remainder: an edit form on each employee's own record, so a man's information can be changed from his file; adding a team login already works.",
   "link": "",
   "needsBefore": "Nothing blocks it: the hive builds it on demo data",
   "key": "V34",
   "mapVia": "own id",
   "status5": "not-done",
   "status5Via": "canonical V34: state partial, waiting on none",
   "status5Word": "Not done",
   "canonicalId": "V34",
   "canonicalState": "partial",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "necessity": "needed-for-demo",
   "necessitySource": "plan v0.2 (materials/handoff/2026-10-31_0102_audit-v2.4/DRAFT_MAKKI_PROJECT_PLAN_2026-10-31_v0.2.md, generated 2026-10-31): card safe-people \"Employee records, skills and qualified dispatch\" on finish line 1",
   "necessityVia": "the canonical row V34's tag (tracker.json, reconciled over all 566 live rows)",
   "necessityWord": "Needed for the demo",
   "plainTitle": "Then click each employee to update their information",
   "outcome": "Not done: partly built.",
   "next": "The remainder: an edit form on each employee's own record, so a man's information can be changed from his file; adding a team login already works.",
   "group": "area-safe",
   "groupName": "Safety · Tickets · People",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "not-live",
   "liveWord": "not on the live build"
  },
  {
   "id": "V35",
   "whose": "build",
   "part": "walkthrough",
   "cat": "QuickBooks & setting up people",
   "title": "CSV import where there is no integration",
   "status": "open",
   "ask": "Fieldflo showed",
   "askKind": "shown",
   "source": "@12:48",
   "lands": "11",
   "note": "the fallback is named on the page; the import does not exist",
   "needs": "Waits on Owner: fifteen minutes on QuickBooks Online",
   "link": "ali-quickbooks",
   "key": "V35",
   "mapVia": "own id",
   "status5": "needs-ali",
   "status5Via": "canonical V35: state blocked, waiting on the owner",
   "status5Word": "Needs Ali",
   "canonicalId": "V35",
   "coveredBy": {
    "gl": "GL-015",
    "extent": "partly",
    "source": "GO_LIVE.md row GL-015 (profile/Master_List_2026-09-16.md:498; written 2026-09-26): \"Built 2026-09-27 (gl-wave5-admin), live v30-admin 2026-10-03\" (hive/checks/2026-09-27_gl-wave5-admin.md); state review in the canonical accounting v2.4 (2026-10-31)",
    "uncovered": "loading the owner's own people, customers and jobs — his spreadsheet or QuickBooks export",
    "why": "GL-015 builds the spreadsheet import; the V row as the owner asked it also needs his own data loaded, which waits on him",
    "glState": "review",
    "glTitle": "A CSV import where there is no integration — load people, customers and jobs from a spreadsheet; the backstop named on the QuickBooks screen — Built 2026-09-…",
    "gradeFile": "hive/checks/2026-09-27_gl-wave5-admin.md",
    "accepted": false
   },
   "canonicalState": "blocked",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "necessity": "needed-for-launch",
   "necessitySource": "plan v0.2 (materials/handoff/2026-10-31_0102_audit-v2.4/DRAFT_MAKKI_PROJECT_PLAN_2026-10-31_v0.2.md, generated 2026-10-31): card fin-cutover \"Data migration and the real-data cut-over\" on finish line 2",
   "necessityVia": "the canonical row V35's tag (tracker.json, reconciled over all 566 live rows)",
   "necessityWord": "Needed for launch",
   "plainTitle": "CSV import where there is no integration",
   "outcome": "Needs Ali: built in part under a later row; what remains: loading the owner's own people, customers and jobs — his spreadsheet or QuickBooks export.",
   "next": "Next: loading the owner's own people, customers and jobs — his spreadsheet or QuickBooks export.",
   "group": "area-fin",
   "groupName": "Finance / QuickBooks",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "not-live",
   "liveWord": "not on the live build"
  },
  {
   "id": "V36",
   "whose": "build",
   "part": "walkthrough",
   "cat": "QuickBooks & setting up people",
   "title": "Every page works the same way: a big button adds, three dots customise — \"painting by number\"",
   "status": "part",
   "ask": "Fieldflo showed",
   "askKind": "shown",
   "source": "@12:48",
   "lands": "",
   "note": "every add-form is consistent, but there is no three-dots admin customisation anywhere",
   "needs": "The remainder: the three-dots customise menu on every page; the big add button is already consistent everywhere.",
   "link": "",
   "needsBefore": "Nothing blocks it: the hive builds it on demo data",
   "key": "V36",
   "mapVia": "own id",
   "status5": "not-done",
   "status5Via": "canonical V36: state partial, waiting on none",
   "status5Word": "Not done",
   "canonicalId": "V36",
   "canonicalState": "partial",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "necessity": "needed-for-demo",
   "necessitySource": "plan v0.2 (materials/handoff/2026-10-31_0102_audit-v2.4/DRAFT_MAKKI_PROJECT_PLAN_2026-10-31_v0.2.md, generated 2026-10-31): card mgmt-ux \"Navigation and everyday usability\" on finish line 1",
   "necessityVia": "the canonical row V36's tag (tracker.json, reconciled over all 566 live rows)",
   "necessityWord": "Needed for the demo",
   "plainTitle": "Every page works the same way: a big button adds, three dots customise — \"painting by…",
   "outcome": "Not done: partly built.",
   "next": "The remainder: the three-dots customise menu on every page; the big add button is already consistent everywhere.",
   "group": "area-mgmt",
   "groupName": "Management (owner · PM · lead)",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "not-live",
   "liveWord": "not on the live build"
  },
  {
   "id": "V37",
   "whose": "build",
   "part": "walkthrough",
   "cat": "QuickBooks & setting up people",
   "title": "A unique QR code created for a person the moment they are created",
   "status": "done",
   "ask": "The owner liked it",
   "askKind": "liked",
   "source": "@12:48",
   "lands": "13, 40",
   "note": "generated on the device from the hat code",
   "needs": "",
   "link": "",
   "key": "V37",
   "mapVia": "own id",
   "status5": "completed",
   "status5Via": "canonical V37: state complete, waiting on none",
   "status5Word": "Completed",
   "canonicalId": "V37",
   "canonicalState": "complete",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "plainTitle": "A unique QR code created for a person the moment they are created",
   "outcome": "Completed on demo data: built, recorded finished in the task accounting of 31 October 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come.",
   "group": "area-gear",
   "groupName": "Equipment / QR / Inventory",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "id": "V38",
   "whose": "build",
   "part": "walkthrough",
   "cat": "QuickBooks & setting up people",
   "title": "An inspector scans the hard hat and sees that man's active certificates",
   "status": "done",
   "ask": "The owner reacted: \"Oh that's great.\" @14:00. The \"I haven't seen anybody else incorporate that.\" @18:54 this row used to carry belongs to V54 (raw-transcript pass, 2026-09-16)",
   "askKind": "asked",
   "source": "@12:48",
   "lands": "41, A56",
   "note": "no login, works offline",
   "needs": "",
   "link": "",
   "key": "V38",
   "mapVia": "own id",
   "status5": "completed",
   "status5Via": "canonical V38: state complete, waiting on none",
   "status5Word": "Completed",
   "canonicalId": "V38",
   "canonicalState": "complete",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "plainTitle": "An inspector scans the hard hat and sees that man's active certificates",
   "outcome": "Completed on demo data: built, recorded finished in the task accounting of 31 October 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come.",
   "group": "area-gear",
   "groupName": "Equipment / QR / Inventory",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "id": "V39",
   "whose": "build",
   "part": "walkthrough",
   "cat": "QuickBooks & setting up people",
   "title": "The inspector sees only active certs; the employee sees the same page including missing and expired, \"so it's on them and the company\"",
   "status": "part",
   "ask": "Fieldflo showed",
   "askKind": "shown",
   "source": "@14:06",
   "lands": "40, 41",
   "note": "our scan page deliberately shows expired ones to the inspector too, because that is the point of the scan. The man's own page matches. \"Missing\" (never held) is not shown on either",
   "needs": "Nothing blocks it: the hive builds it on demo data",
   "link": "",
   "key": "V39",
   "mapVia": "own id",
   "status5": "not-done",
   "status5Via": "canonical V39: state partial, waiting on none",
   "status5Word": "Not done",
   "canonicalId": "V39",
   "canonicalState": "partial",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "necessity": "needed-for-demo",
   "necessitySource": "plan v0.2 (materials/handoff/2026-10-31_0102_audit-v2.4/DRAFT_MAKKI_PROJECT_PLAN_2026-10-31_v0.2.md, generated 2026-10-31): card gear-qr \"QR setup: hats and assets\" on finish line 1",
   "necessityVia": "the canonical row V39's tag (tracker.json, reconciled over all 566 live rows)",
   "necessityWord": "Needed for the demo",
   "plainTitle": "The inspector sees only active certs; the employee sees the same page including missing…",
   "outcome": "Not done: partly built.",
   "next": "Nothing blocks it: the hive builds it on demo data",
   "group": "area-gear",
   "groupName": "Equipment / QR / Inventory",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "not-live",
   "liveWord": "not on the live build"
  },
  {
   "id": "V40",
   "whose": "build",
   "part": "walkthrough",
   "cat": "People: profiles & training",
   "title": "Emergency details on the profile",
   "status": "open",
   "ask": "Fieldflo showed",
   "askKind": "shown",
   "source": "@14:06",
   "lands": "",
   "note": "",
   "needs": "Waits on Owner: crew list with mobiles, tickets and expiry dates",
   "link": "ali-crew",
   "key": "V40",
   "mapVia": "own id",
   "status5": "needs-ali",
   "status5Via": "canonical V40: state blocked, waiting on the owner",
   "status5Word": "Needs Ali",
   "canonicalId": "V40",
   "canonicalState": "blocked",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "necessity": "needed-for-demo",
   "necessitySource": "plan v0.2 (materials/handoff/2026-10-31_0102_audit-v2.4/DRAFT_MAKKI_PROJECT_PLAN_2026-10-31_v0.2.md, generated 2026-10-31): card safe-people \"Employee records, skills and qualified dispatch\" on finish line 1",
   "necessityVia": "the canonical row V40's tag (tracker.json, reconciled over all 566 live rows)",
   "necessityWord": "Needed for the demo",
   "plainTitle": "Emergency details on the profile",
   "outcome": "Needs Ali: not started — it waits on the owner.",
   "next": "Waits on Owner: crew list with mobiles, tickets and expiry dates",
   "group": "area-safe",
   "groupName": "Safety · Tickets · People",
   "alsoAreas": [
    "Finance / QuickBooks"
   ],
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "not-live",
   "liveWord": "not on the live build"
  },
  {
   "id": "V41",
   "whose": "build",
   "part": "walkthrough",
   "cat": "People: profiles & training",
   "title": "Training pushed to the whole company or a division, onto each phone, entered with a secret PIN, taken in his own language",
   "status": "open",
   "ask": "Owner: \"Perfect.\" @15:24",
   "askKind": "liked",
   "source": "@14:06",
   "lands": "",
   "note": "",
   "needs": "Nothing blocks it: the hive builds it on demo data",
   "link": "",
   "key": "V41",
   "mapVia": "own id",
   "status5": "not-done",
   "status5Via": "canonical V41: state open, waiting on none",
   "status5Word": "Not done",
   "canonicalId": "V41",
   "canonicalState": "open",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "necessity": "needed-for-demo",
   "necessitySource": "plan v0.2 (materials/handoff/2026-10-31_0102_audit-v2.4/DRAFT_MAKKI_PROJECT_PLAN_2026-10-31_v0.2.md, generated 2026-10-31): card safe-train \"Training, training matrix, orientation and onboarding\" on finish line 1",
   "necessityVia": "the canonical row V41's tag (tracker.json, reconciled over all 566 live rows)",
   "necessityWord": "Needed for the demo",
   "plainTitle": "Training pushed to the whole company or a division, onto each phone, entered with a…",
   "outcome": "Not done: not started.",
   "next": "Nothing blocks it: the hive builds it on demo data",
   "group": "area-safe",
   "groupName": "Safety · Tickets · People",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "not-live",
   "liveWord": "not on the live build"
  },
  {
   "id": "V42",
   "whose": "build",
   "part": "walkthrough",
   "cat": "People: profiles & training",
   "title": "600+ Got Safety training videos with a quiz, at $4 per employee per month",
   "status": "open",
   "ask": "Fieldflo upsold it",
   "askKind": "shown",
   "source": "@15:31",
   "lands": "",
   "note": "and it is a third party's library, not ours to resell",
   "needs": "Nothing blocks it: the hive builds it on demo data",
   "link": "",
   "key": "V42",
   "mapVia": "own id",
   "status5": "not-done",
   "status5Via": "canonical V42: state open, waiting on none",
   "status5Word": "Not done",
   "canonicalId": "V42",
   "canonicalState": "open",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "necessity": "needed-for-demo",
   "necessitySource": "plan v0.2 (materials/handoff/2026-10-31_0102_audit-v2.4/DRAFT_MAKKI_PROJECT_PLAN_2026-10-31_v0.2.md, generated 2026-10-31): card safe-train \"Training, training matrix, orientation and onboarding\" on finish line 1",
   "necessityVia": "the canonical row V42's tag (tracker.json, reconciled over all 566 live rows)",
   "necessityWord": "Needed for the demo",
   "plainTitle": "600+ Got Safety training videos with a quiz, at $4 per employee per month",
   "outcome": "Not done: not started.",
   "next": "Nothing blocks it: the hive builds it on demo data",
   "group": "area-safe",
   "groupName": "Safety · Tickets · People",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "not-live",
   "liveWord": "not on the live build"
  },
  {
   "id": "V43",
   "whose": "build",
   "part": "walkthrough",
   "cat": "People: profiles & training",
   "title": "A passed training produces a branded certificate tracked like any other cert, with the same expiry warning",
   "status": "part",
   "ask": "The owner asked, by finishing the sentence",
   "askKind": "asked",
   "source": "@15:31; the owner finished Dan's sentence: \"And let you know that's been close to expiring and all that fun stuff.\" @15:45",
   "lands": "13",
   "note": "the cert tracking and the expiry warnings are built; nothing produces a certificate from a training",
   "needs": "Nothing blocks it: the hive builds it on demo data",
   "link": "",
   "key": "V43",
   "mapVia": "own id",
   "status5": "not-done",
   "status5Via": "canonical V43: state partial, waiting on none",
   "status5Word": "Not done",
   "canonicalId": "V43",
   "canonicalState": "partial",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "necessity": "needed-for-demo",
   "necessitySource": "plan v0.2 (materials/handoff/2026-10-31_0102_audit-v2.4/DRAFT_MAKKI_PROJECT_PLAN_2026-10-31_v0.2.md, generated 2026-10-31): card safe-train \"Training, training matrix, orientation and onboarding\" on finish line 1",
   "necessityVia": "the canonical row V43's tag (tracker.json, reconciled over all 566 live rows)",
   "necessityWord": "Needed for the demo",
   "plainTitle": "A passed training produces a branded certificate tracked like any other cert, with the…",
   "outcome": "Not done: partly built.",
   "next": "Nothing blocks it: the hive builds it on demo data",
   "group": "area-safe",
   "groupName": "Safety · Tickets · People",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "not-live",
   "liveWord": "not on the live build"
  },
  {
   "id": "V44",
   "whose": "build",
   "part": "walkthrough",
   "cat": "People: profiles & training",
   "title": "Profile fields: employee number, name, cell, temp labour, default cost code / position, office or division",
   "status": "part",
   "ask": "Fieldflo showed",
   "askKind": "shown",
   "source": "@15:51",
   "lands": "12, 13",
   "note": "name, trade, crew, phone, start date, day rate and hat code are held; no employee number, no temp-labour flag, no default cost code, no office/division",
   "needs": "Waits on Owner: crew list with mobiles, tickets and expiry dates",
   "link": "ali-crew",
   "key": "V44",
   "mapVia": "own id",
   "status5": "needs-ali",
   "status5Via": "canonical V44: state partial, waiting on the owner",
   "status5Word": "Needs Ali",
   "canonicalId": "V44",
   "canonicalState": "partial",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "necessity": "needed-for-demo",
   "necessitySource": "plan v0.2 (materials/handoff/2026-10-31_0102_audit-v2.4/DRAFT_MAKKI_PROJECT_PLAN_2026-10-31_v0.2.md, generated 2026-10-31): card safe-people \"Employee records, skills and qualified dispatch\" on finish line 1",
   "necessityVia": "the canonical row V44's tag (tracker.json, reconciled over all 566 live rows)",
   "necessityWord": "Needed for the demo",
   "plainTitle": "Profile fields: employee number, name, cell, temp labour, default cost code / position…",
   "outcome": "Needs Ali: partly built — it waits on the owner.",
   "next": "Waits on Owner: crew list with mobiles, tickets and expiry dates",
   "group": "area-safe",
   "groupName": "Safety · Tickets · People",
   "alsoAreas": [
    "Finance / QuickBooks"
   ],
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "not-live",
   "liveWord": "not on the live build"
  },
  {
   "id": "V45",
   "whose": "build",
   "part": "walkthrough",
   "cat": "People: profiles & training",
   "title": "Skills on the profile; dispatchers filter by skill; a skill icon on the project",
   "status": "open",
   "ask": "The owner liked it",
   "askKind": "liked",
   "source": "@15:51; Owner: \"Yeah. So they have a nice little picture, certs.\" @16:35",
   "lands": "",
   "note": "we have tickets, not skills",
   "needs": "Waits on Owner: crew list with mobiles, tickets and expiry dates",
   "link": "ali-crew",
   "key": "V45",
   "mapVia": "own id",
   "status5": "needs-ali",
   "status5Via": "canonical V45: state blocked, waiting on the owner",
   "status5Word": "Needs Ali",
   "canonicalId": "V45",
   "canonicalState": "blocked",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "necessity": "needed-for-demo",
   "necessitySource": "plan v0.2 (materials/handoff/2026-10-31_0102_audit-v2.4/DRAFT_MAKKI_PROJECT_PLAN_2026-10-31_v0.2.md, generated 2026-10-31): card safe-people \"Employee records, skills and qualified dispatch\" on finish line 1",
   "necessityVia": "the canonical row V45's tag (tracker.json, reconciled over all 566 live rows)",
   "necessityWord": "Needed for the demo",
   "plainTitle": "Skills on the profile; dispatchers filter by skill; a skill icon on the project",
   "outcome": "Needs Ali: not started — it waits on the owner.",
   "next": "Waits on Owner: crew list with mobiles, tickets and expiry dates",
   "group": "area-safe",
   "groupName": "Safety · Tickets · People",
   "alsoAreas": [
    "Finance / QuickBooks"
   ],
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "not-live",
   "liveWord": "not on the live build"
  },
  {
   "id": "V46",
   "whose": "build",
   "part": "walkthrough",
   "cat": "People: profiles & training",
   "title": "A training matrix: who has what certs and whether they have the right ones",
   "status": "part",
   "ask": "Fieldflo showed",
   "askKind": "shown",
   "source": "@16:40",
   "lands": "13, 33",
   "note": "\"The men\" table is exactly this for tickets; it is not a matrix and it does not cover trainings",
   "needs": "Nothing blocks it: the hive builds it on demo data",
   "link": "",
   "key": "V46",
   "mapVia": "own id",
   "status5": "not-done",
   "status5Via": "canonical V46: state partial, waiting on none",
   "status5Word": "Not done",
   "canonicalId": "V46",
   "canonicalState": "partial",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "necessity": "needed-for-demo",
   "necessitySource": "plan v0.2 (materials/handoff/2026-10-31_0102_audit-v2.4/DRAFT_MAKKI_PROJECT_PLAN_2026-10-31_v0.2.md, generated 2026-10-31): card safe-train \"Training, training matrix, orientation and onboarding\" on finish line 1",
   "necessityVia": "the canonical row V46's tag (tracker.json, reconciled over all 566 live rows)",
   "necessityWord": "Needed for the demo",
   "plainTitle": "A training matrix: who has what certs and whether they have the right ones",
   "outcome": "Not done: partly built.",
   "next": "Nothing blocks it: the hive builds it on demo data",
   "group": "area-safe",
   "groupName": "Safety · Tickets · People",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "not-live",
   "liveWord": "not on the live build"
  },
  {
   "id": "V47",
   "whose": "build",
   "part": "walkthrough",
   "cat": "People: profiles & training",
   "title": "Write-ups, permissions, trainings, documents and emergency contact on the person",
   "status": "part",
   "ask": "Fieldflo showed",
   "askKind": "shown",
   "source": "@16:40",
   "lands": "12",
   "note": "permissions are built (A12); write-ups, trainings, per-person documents and emergency contact are not",
   "needs": "Waits on Owner: crew list with mobiles, tickets and expiry dates",
   "link": "ali-crew",
   "key": "V47",
   "mapVia": "own id",
   "status5": "needs-ali",
   "status5Via": "canonical V47: state partial, waiting on the owner",
   "status5Word": "Needs Ali",
   "canonicalId": "V47",
   "canonicalState": "partial",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "necessity": "needed-for-demo",
   "necessitySource": "plan v0.2 (materials/handoff/2026-10-31_0102_audit-v2.4/DRAFT_MAKKI_PROJECT_PLAN_2026-10-31_v0.2.md, generated 2026-10-31): card safe-people \"Employee records, skills and qualified dispatch\" on finish line 1",
   "necessityVia": "the canonical row V47's tag (tracker.json, reconciled over all 566 live rows)",
   "necessityWord": "Needed for the demo",
   "plainTitle": "Write-ups, permissions, trainings, documents and emergency contact on the person",
   "outcome": "Needs Ali: partly built — it waits on the owner.",
   "next": "Waits on Owner: crew list with mobiles, tickets and expiry dates",
   "group": "area-safe",
   "groupName": "Safety · Tickets · People",
   "alsoAreas": [
    "Finance / QuickBooks"
   ],
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "not-live",
   "liveWord": "not on the live build"
  },
  {
   "id": "V48",
   "whose": "build",
   "part": "walkthrough",
   "cat": "Tickets & certificates",
   "title": "Define the list of cert types (three dots → Cert names)",
   "status": "open",
   "ask": "Fieldflo showed",
   "askKind": "shown",
   "source": "@17:30",
   "lands": "",
   "note": "the types are seeded in certs.js; there is no screen to edit them",
   "needs": "Nothing blocks it: the hive builds it on demo data",
   "link": "",
   "key": "V48",
   "mapVia": "own id",
   "status5": "completed",
   "status5Via": "canonical V48: state review, waiting on none",
   "status5Word": "Completed",
   "canonicalId": "V48",
   "coveredBy": {
    "gl": "GL-004",
    "extent": "covered",
    "source": "GO_LIVE.md row GL-004 (profile/Master_List_2026-09-16.md:477, V48; written 2026-09-26): Built — wave gl-wave1-people, criteria and run 2026-09-27 (hive/checks/2026-09-27_gl-wave1-people.md, criteria 29 and 54); state review in the canonical accounting v2.4 (2026-10-31)",
    "uncovered": null,
    "why": "the V row asks for a list of cert types that can be defined; GL-004 is the admin screen over the seeded types",
    "glState": "review",
    "glTitle": "Editing the list of cert types — a small admin screen over the certs.js types",
    "gradeFile": "hive/checks/2026-09-27_gl-wave1-people.md",
    "accepted": false
   },
   "canonicalState": "review",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "plainTitle": "Define the list of cert types (three dots → Cert names)",
   "outcome": "Completed on demo data: a later go-live row built this and reported it finished; the older wording of this row is kept in its details.",
   "next": "Nothing left to build here: the later row that built it carries the report and its review record.",
   "group": "area-safe",
   "groupName": "Safety · Tickets · People",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "id": "V49",
   "whose": "build",
   "part": "walkthrough",
   "cat": "Tickets & certificates",
   "title": "Add a certificate: pick the type, valid from, expiry, which employee, take a picture of it, upload",
   "status": "done",
   "ask": "Owner: \"It's pretty, pretty straightforward.\" @18:46",
   "askKind": "liked",
   "source": "@17:30",
   "lands": "13, 33",
   "note": "owner files for any man, site lead for his own crew; type / issuer / number / issued / expires / photo of the ticket, and the course cost owner-only. Refuses a bad date or an expiry before the issue date, warns instead of duplicating, and the man it unblocks is unblocked through the same check that refused him",
   "needs": "",
   "link": "",
   "key": "V49",
   "mapVia": "own id",
   "status5": "completed",
   "status5Via": "canonical V49: state complete, waiting on none",
   "status5Word": "Completed",
   "canonicalId": "V49",
   "canonicalState": "complete",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "plainTitle": "Add a certificate: pick the type, valid, expiry, which employee, take a picture of it…",
   "outcome": "Completed on demo data: built, recorded finished in the task accounting of 31 October 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come.",
   "group": "area-safe",
   "groupName": "Safety · Tickets · People",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "id": "V50",
   "whose": "build",
   "part": "walkthrough",
   "cat": "Tickets & certificates",
   "title": "Certs listed alphabetically",
   "status": "part",
   "ask": "Fieldflo showed",
   "askKind": "shown",
   "source": "@17:30",
   "lands": "13",
   "note": "ours sort by urgency (expired first), which is the more useful order, and every table is searchable",
   "needs": "Nothing blocks it: the hive builds it on demo data",
   "link": "",
   "key": "V50",
   "mapVia": "own id",
   "status5": "not-done",
   "status5Via": "canonical V50: state partial, waiting on none",
   "status5Word": "Not done",
   "canonicalId": "V50",
   "canonicalState": "partial",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "necessity": "needed-for-demo",
   "necessitySource": "plan v0.2 (materials/handoff/2026-10-31_0102_audit-v2.4/DRAFT_MAKKI_PROJECT_PLAN_2026-10-31_v0.2.md, generated 2026-10-31): card safe-tickets \"Tickets and certificates\" on finish line 1",
   "necessityVia": "the canonical row V50's tag (tracker.json, reconciled over all 566 live rows)",
   "necessityWord": "Needed for the demo",
   "plainTitle": "Certs listed alphabetically",
   "outcome": "Not done: partly built.",
   "next": "Nothing blocks it: the hive builds it on demo data",
   "group": "area-safe",
   "groupName": "Safety · Tickets · People",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "not-live",
   "liveWord": "not on the live build"
  },
  {
   "id": "V51",
   "whose": "build",
   "part": "walkthrough",
   "cat": "Tickets & certificates",
   "title": "A renewals list — \"all the ones that need to be renewed\"",
   "status": "done",
   "ask": "Fieldflo showed",
   "askKind": "shown",
   "source": "@17:30",
   "lands": "13, 33",
   "note": "the Needs attention panel is exactly this",
   "needs": "",
   "link": "",
   "key": "V51",
   "mapVia": "own id",
   "status5": "completed",
   "status5Via": "canonical V51: state complete, waiting on none",
   "status5Word": "Completed",
   "canonicalId": "V51",
   "canonicalState": "complete",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "plainTitle": "A renewals list — \"all the ones that need to be renewed\"",
   "outcome": "Completed on demo data: built, recorded finished in the task accounting of 31 October 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come.",
   "group": "area-safe",
   "groupName": "Safety · Tickets · People",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "id": "V52",
   "whose": "build",
   "part": "walkthrough",
   "cat": "Tickets & certificates",
   "title": "Renew a cert: new valid-from and expiry; the new one becomes active, the old one is archived forever",
   "status": "done",
   "ask": "The owner liked it (no separate quote of his own — @18:46 covers add / renew / archive as one)",
   "askKind": "liked",
   "source": "@17:30",
   "lands": "13, 33",
   "note": "Renew on the panel and on each ticket in a man's file; the new one goes live, the old one moves to the archive and is never deleted",
   "needs": "",
   "link": "",
   "key": "V52",
   "mapVia": "own id",
   "status5": "completed",
   "status5Via": "canonical V52: state complete, waiting on none",
   "status5Word": "Completed",
   "canonicalId": "V52",
   "canonicalState": "complete",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "plainTitle": "Renew a cert: new valid-from and expiry; the new one becomes active, the old one is…",
   "outcome": "Completed on demo data: built, recorded finished in the task accounting of 31 October 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come.",
   "group": "area-safe",
   "groupName": "Safety · Tickets · People",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "id": "V53",
   "whose": "build",
   "part": "walkthrough",
   "cat": "Tickets & certificates",
   "title": "Export a PDF pack of certs to send to anyone",
   "status": "open",
   "ask": "Fieldflo showed",
   "askKind": "shown",
   "source": "@17:30",
   "lands": "",
   "note": "",
   "needs": "Nothing blocks it: the hive builds it on demo data",
   "link": "",
   "key": "V53",
   "mapVia": "own id",
   "status5": "not-done",
   "status5Via": "canonical V53: state open, waiting on none",
   "status5Word": "Not done",
   "canonicalId": "V53",
   "canonicalState": "open",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "necessity": "needed-for-demo",
   "necessitySource": "plan v0.2 (materials/handoff/2026-10-31_0102_audit-v2.4/DRAFT_MAKKI_PROJECT_PLAN_2026-10-31_v0.2.md, generated 2026-10-31): card safe-tickets \"Tickets and certificates\" on finish line 1",
   "necessityVia": "the canonical row V53's tag (tracker.json, reconciled over all 566 live rows)",
   "necessityWord": "Needed for the demo",
   "plainTitle": "Export a PDF pack of certs to send to anyone",
   "outcome": "Not done: not started.",
   "next": "Nothing blocks it: the hive builds it on demo data",
   "group": "area-safe",
   "groupName": "Safety · Tickets · People",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "not-live",
   "liveWord": "not on the live build"
  },
  {
   "id": "V54",
   "whose": "build",
   "part": "walkthrough",
   "cat": "Tickets & certificates",
   "title": "The archive is visible forever",
   "status": "done",
   "ask": "Owner: \"I haven't seen anybody else incorporate that into their program.\" @18:54 — said straight after Dan's \"And you can see all the archives\" (L246). Moved here from V38 (raw-transcript pass, 2026-09-16)",
   "askKind": "liked",
   "source": "@18:52, @19:01",
   "lands": "13, 33, 40, 41",
   "note": "\"kept, never deleted, so you can always show what was valid on the day\"",
   "needs": "",
   "link": "",
   "key": "V54",
   "mapVia": "own id",
   "status5": "completed",
   "status5Via": "canonical V54: state complete, waiting on none",
   "status5Word": "Completed",
   "canonicalId": "V54",
   "canonicalState": "complete",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "plainTitle": "The archive is visible forever",
   "outcome": "Completed on demo data: built, recorded finished in the task accounting of 31 October 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come.",
   "group": "area-safe",
   "groupName": "Safety · Tickets · People",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "id": "V55",
   "whose": "build",
   "part": "walkthrough",
   "cat": "Equipment & inventory",
   "title": "An Inventory page with Add item (excavator, skid steer, sprayers)",
   "status": "part",
   "ask": "Fieldflo showed — The owner said nothing at @19:01. The \"That's great.\" @21:20 this row used to carry belongs to V64 (raw-transcript pass, 2026-09-16)",
   "askKind": "shown",
   "source": "@19:01",
   "lands": "15, 16, 35, 36",
   "note": "the lists exist and are searchable; there is no Add item form in either",
   "needs": "Waits on Owner: his equipment list",
   "link": "ali-equipment",
   "key": "V55",
   "mapVia": "own id",
   "status5": "needs-ali",
   "status5Via": "canonical V55: state partial, waiting on the owner",
   "status5Word": "Needs Ali",
   "canonicalId": "V55",
   "coveredBy": {
    "gl": "GL-012",
    "extent": "partly",
    "source": "GO_LIVE.md row GL-012 (profile/Master_List_2026-09-16.md:500, Add item) (written 2026-09-26, State re-printed 2026-10-04): Built — wave gl-wave2-forms, criteria and run 2026-09-27 (hive/checks/2026-09-27_gl-wave2-forms.md); state review in the canonical accounting v2.4 (2026-10-31)",
    "uncovered": "The owner's own equipment list to fill the page",
    "why": "GL-012 builds the add form for an asset and an inventory line; the V row as the owner asked it also waits on his equipment list",
    "glState": "review",
    "glTitle": "An \"add\" form for an asset and for an inventory line — every list in the app can be read, searched and filtered; almost none of them can be added to",
    "gradeFile": "hive/checks/2026-09-27_gl-wave2-forms.md",
    "accepted": false
   },
   "canonicalState": "partial",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "necessity": "needed-for-demo",
   "necessitySource": "plan v0.2 (materials/handoff/2026-10-31_0102_audit-v2.4/DRAFT_MAKKI_PROJECT_PLAN_2026-10-31_v0.2.md, generated 2026-10-31): card gear-assets \"Equipment records, maintenance, inspections and the equipment map\" on finish line 1",
   "necessityVia": "the canonical row V55's tag (tracker.json, reconciled over all 566 live rows)",
   "necessityWord": "Needed for the demo",
   "plainTitle": "An Inventory page with Add item (excavator, skid steer, sprayers)",
   "outcome": "Needs Ali: built in part under a later row; what remains: the owner's own equipment list to fill the page.",
   "next": "Next: the owner's own equipment list to fill the page.",
   "group": "area-gear",
   "groupName": "Equipment / QR / Inventory",
   "alsoAreas": [
    "Finance / QuickBooks"
   ],
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "not-live",
   "liveWord": "not on the live build"
  },
  {
   "id": "V56",
   "whose": "build",
   "part": "walkthrough",
   "cat": "Equipment & inventory",
   "title": "A QR code on every asset; an operator scans it and inspects it without logging into the platform",
   "status": "part",
   "ask": "Fieldflo showed — The owner said nothing (raw-transcript pass, 2026-09-16)",
   "askKind": "shown",
   "source": "@19:01",
   "lands": "42, A49, A57",
   "note": "the scan page exists and needs no login, but it is read-only — you cannot log the inspection from it",
   "needs": "Nothing blocks it: the hive builds it on demo data",
   "link": "",
   "key": "V56",
   "mapVia": "own id",
   "status5": "not-done",
   "status5Via": "canonical V56: state partial, waiting on none",
   "status5Word": "Not done",
   "canonicalId": "V56",
   "canonicalState": "partial",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "necessity": "needed-for-demo",
   "necessitySource": "plan v0.2 (materials/handoff/2026-10-31_0102_audit-v2.4/DRAFT_MAKKI_PROJECT_PLAN_2026-10-31_v0.2.md, generated 2026-10-31): card gear-qr \"QR setup: hats and assets\" on finish line 1",
   "necessityVia": "the canonical row V56's tag (tracker.json, reconciled over all 566 live rows)",
   "necessityWord": "Needed for the demo",
   "plainTitle": "A QR code on every asset; an operator scans it and inspects it without logging into the…",
   "outcome": "Not done: partly built.",
   "next": "Nothing blocks it: the hive builds it on demo data",
   "group": "area-gear",
   "groupName": "Equipment / QR / Inventory",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "not-live",
   "liveWord": "not on the live build"
  },
  {
   "id": "V57",
   "whose": "build",
   "part": "walkthrough",
   "cat": "Equipment & inventory",
   "title": "Read the SDS on a chemical from the same scan",
   "status": "open",
   "ask": "Fieldflo showed",
   "askKind": "shown",
   "source": "@19:01",
   "lands": "14 (SDS placeholders)",
   "note": "SDS documents are in the library, not on the scan",
   "needs": "Waits on Owner: his equipment list",
   "link": "ali-equipment",
   "key": "V57",
   "mapVia": "own id",
   "status5": "needs-ali",
   "status5Via": "canonical V57: state blocked, waiting on the owner",
   "status5Word": "Needs Ali",
   "canonicalId": "V57",
   "coveredBy": {
    "gl": "GL-006",
    "extent": "partly",
    "source": "GO_LIVE.md row GL-006 (profile/Master_List_2026-09-16.md:481, V57) (written 2026-09-26, State re-printed 2026-10-04): Built — wave gl-wave2-forms, criteria and run 2026-09-27 (hive/checks/2026-09-27_gl-wave2-forms.md); state review in the canonical accounting v2.4 (2026-10-31)",
    "uncovered": "The owner's own safety data sheets to link to his chemicals",
    "why": "GL-006 links a document to an asset and puts it on the scan page; the V row's own SDS documents are the owner's to send",
    "glState": "review",
    "glTitle": "SDS from an asset scan — link a document to an asset and put it on the scan page",
    "gradeFile": "hive/checks/2026-09-27_gl-wave2-forms.md",
    "accepted": false
   },
   "canonicalState": "blocked",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "necessity": "needed-for-demo",
   "necessitySource": "plan v0.2 (materials/handoff/2026-10-31_0102_audit-v2.4/DRAFT_MAKKI_PROJECT_PLAN_2026-10-31_v0.2.md, generated 2026-10-31): card gear-qr \"QR setup: hats and assets\" on finish line 1",
   "necessityVia": "the canonical row V57's tag (tracker.json, reconciled over all 566 live rows)",
   "necessityWord": "Needed for the demo",
   "plainTitle": "Read the SDS on a chemical from the same scan",
   "outcome": "Needs Ali: built in part under a later row; what remains: the owner's own safety data sheets to link to his chemicals.",
   "next": "Next: the owner's own safety data sheets to link to his chemicals.",
   "group": "area-gear",
   "groupName": "Equipment / QR / Inventory",
   "alsoAreas": [
    "Finance / QuickBooks"
   ],
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "not-live",
   "liveWord": "not on the live build"
  },
  {
   "id": "V58",
   "whose": "build",
   "part": "walkthrough",
   "cat": "Equipment & inventory",
   "title": "The item record: number, warehouse location, name, inspections, quantity, office, cost codes and rates (T&M rates brought in)",
   "status": "part",
   "ask": "Fieldflo showed",
   "askKind": "shown",
   "source": "@19:01",
   "lands": "15, A49",
   "note": "code, name, make, serial, where, inspections, value / day rate; no quantity, no office, no cost code on the asset",
   "needs": "Waits on Owner: his equipment list",
   "link": "ali-equipment",
   "key": "V58",
   "mapVia": "own id",
   "status5": "needs-ali",
   "status5Via": "canonical V58: state partial, waiting on the owner",
   "status5Word": "Needs Ali",
   "canonicalId": "V58",
   "canonicalState": "partial",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "necessity": "needed-for-demo",
   "necessitySource": "plan v0.2 (materials/handoff/2026-10-31_0102_audit-v2.4/DRAFT_MAKKI_PROJECT_PLAN_2026-10-31_v0.2.md, generated 2026-10-31): card gear-assets \"Equipment records, maintenance, inspections and the equipment map\" on finish line 1",
   "necessityVia": "the canonical row V58's tag (tracker.json, reconciled over all 566 live rows)",
   "necessityWord": "Needed for the demo",
   "plainTitle": "The item record: number, warehouse location, name, inspections, quantity, office, cost…",
   "outcome": "Needs Ali: partly built — it waits on the owner.",
   "next": "Waits on Owner: his equipment list",
   "group": "area-gear",
   "groupName": "Equipment / QR / Inventory",
   "alsoAreas": [
    "Finance / QuickBooks"
   ],
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "not-live",
   "liveWord": "not on the live build"
  },
  {
   "id": "V59",
   "whose": "build",
   "part": "walkthrough",
   "cat": "Equipment & inventory",
   "title": "Inspections per item; a failed one notifies the warehouse manager",
   "status": "part",
   "ask": "Fieldflo showed",
   "askKind": "shown",
   "source": "@19:01",
   "lands": "14, 34",
   "note": "\"Equipment inspection\" is one of the three kinds you can log on the Safety page; nobody is notified",
   "needs": "Nothing blocks it: the hive builds it on demo data",
   "link": "",
   "key": "V59",
   "mapVia": "own id",
   "status5": "not-done",
   "status5Via": "canonical V59: state partial, waiting on none",
   "status5Word": "Not done",
   "canonicalId": "V59",
   "canonicalState": "partial",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "necessity": "needed-for-demo",
   "necessitySource": "plan v0.2 (materials/handoff/2026-10-31_0102_audit-v2.4/DRAFT_MAKKI_PROJECT_PLAN_2026-10-31_v0.2.md, generated 2026-10-31): card gear-assets \"Equipment records, maintenance, inspections and the equipment map\" on finish line 1",
   "necessityVia": "the canonical row V59's tag (tracker.json, reconciled over all 566 live rows)",
   "necessityWord": "Needed for the demo",
   "plainTitle": "Inspections per item; a failed one notifies the warehouse manager",
   "outcome": "Not done: partly built.",
   "next": "Nothing blocks it: the hive builds it on demo data",
   "group": "area-gear",
   "groupName": "Equipment / QR / Inventory",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "not-live",
   "liveWord": "not on the live build"
  },
  {
   "id": "V60",
   "whose": "build",
   "part": "walkthrough",
   "cat": "Equipment & inventory",
   "title": "Build your own inspection question sets",
   "status": "open",
   "ask": "Fieldflo showed",
   "askKind": "shown",
   "source": "@19:01",
   "lands": "",
   "note": "",
   "needs": "Nothing blocks it: the hive builds it on demo data",
   "link": "",
   "key": "V60",
   "mapVia": "own id",
   "status5": "completed",
   "status5Via": "canonical V60: state review, waiting on none",
   "status5Word": "Completed",
   "canonicalId": "V60",
   "coveredBy": {
    "gl": "GL-007",
    "extent": "covered",
    "source": "GO_LIVE.md row GL-007 (profile/Master_List_2026-09-16.md:482, V60) (written 2026-09-26, State re-printed 2026-10-04): Built — wave gl-wave2-forms, criteria and run 2026-09-27 (hive/checks/2026-09-27_gl-wave2-forms.md); state review in the canonical accounting v2.4 (2026-10-31)",
    "uncovered": null,
    "why": "the V row asks for building your own inspection question sets; GL-007 is the inspection-template builder",
    "glState": "review",
    "glTitle": "Building your own inspection question sets (an inspection-template builder), and an asbestos-specific inspection checklist (manometer reading, two-stage wast…",
    "gradeFile": "hive/checks/2026-09-27_gl-wave2-forms.md",
    "accepted": false
   },
   "canonicalState": "review",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "plainTitle": "Build your own inspection question sets",
   "outcome": "Completed on demo data: a later go-live row built this and reported it finished; the older wording of this row is kept in its details.",
   "next": "Nothing left to build here: the later row that built it carries the report and its review record.",
   "group": "area-mgmt",
   "groupName": "Management (owner · PM · lead)",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "id": "V61",
   "whose": "build",
   "part": "walkthrough",
   "cat": "Equipment & inventory",
   "title": "Maintenance and repair history per item",
   "status": "open",
   "ask": "Fieldflo showed",
   "askKind": "shown",
   "source": "@19:01",
   "lands": "",
   "note": "",
   "needs": "Waits on Owner: his equipment list",
   "link": "ali-equipment",
   "key": "V61",
   "mapVia": "own id",
   "status5": "needs-ali",
   "status5Via": "canonical V61: state blocked, waiting on the owner",
   "status5Word": "Needs Ali",
   "canonicalId": "V61",
   "canonicalState": "blocked",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "necessity": "needed-for-demo",
   "necessitySource": "plan v0.2 (materials/handoff/2026-10-31_0102_audit-v2.4/DRAFT_MAKKI_PROJECT_PLAN_2026-10-31_v0.2.md, generated 2026-10-31): card gear-assets \"Equipment records, maintenance, inspections and the equipment map\" on finish line 1",
   "necessityVia": "the canonical row V61's tag (tracker.json, reconciled over all 566 live rows)",
   "necessityWord": "Needed for the demo",
   "plainTitle": "Maintenance and repair history per item",
   "outcome": "Needs Ali: not started — it waits on the owner.",
   "next": "Waits on Owner: his equipment list",
   "group": "area-gear",
   "groupName": "Equipment / QR / Inventory",
   "alsoAreas": [
    "Finance / QuickBooks"
   ],
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "not-live",
   "liveWord": "not on the live build"
  },
  {
   "id": "V62",
   "whose": "build",
   "part": "walkthrough",
   "cat": "Equipment & inventory",
   "title": "A loadout list: the PM lists what a project needs, the warehouse manager is notified with the address and delivery notes, and fulfils it",
   "status": "open",
   "ask": "Fieldflo showed — The owner said nothing (raw-transcript pass, 2026-09-16)",
   "askKind": "shown",
   "source": "@19:01",
   "lands": "",
   "note": "",
   "needs": "Waits on Owner: his equipment list",
   "link": "ali-equipment",
   "key": "V62",
   "mapVia": "own id",
   "status5": "needs-ali",
   "status5Via": "canonical V62: state blocked, waiting on the owner",
   "status5Word": "Needs Ali",
   "canonicalId": "V62",
   "canonicalState": "blocked",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "necessity": "needed-for-demo",
   "necessitySource": "plan v0.2 (materials/handoff/2026-10-31_0102_audit-v2.4/DRAFT_MAKKI_PROJECT_PLAN_2026-10-31_v0.2.md, generated 2026-10-31): card gear-ware \"Warehouse, loadouts, inventory and materials\" on finish line 1",
   "necessityVia": "the canonical row V62's tag (tracker.json, reconciled over all 566 live rows)",
   "necessityWord": "Needed for the demo",
   "plainTitle": "A loadout list: the PM lists what a project needs, the warehouse manager is notified…",
   "outcome": "Needs Ali: not started — it waits on the owner.",
   "next": "Waits on Owner: his equipment list",
   "group": "area-gear",
   "groupName": "Equipment / QR / Inventory",
   "alsoAreas": [
    "Finance / QuickBooks"
   ],
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "not-live",
   "liveWord": "not on the live build"
  },
  {
   "id": "V63",
   "whose": "build",
   "part": "walkthrough",
   "cat": "Equipment & inventory",
   "title": "Stock moves out of inventory onto the project, cost-coded, estimates versus actuals",
   "status": "open",
   "ask": "Fieldflo showed — The owner said nothing (raw-transcript pass, 2026-09-16)",
   "askKind": "shown",
   "source": "@19:01",
   "lands": "6, 26 (cost codes exist)",
   "note": "inventory does not move onto a job",
   "needs": "Waits on Owner: his equipment list",
   "link": "ali-equipment",
   "key": "V63",
   "mapVia": "own id",
   "status5": "needs-ali",
   "status5Via": "canonical V63: state blocked, waiting on the owner",
   "status5Word": "Needs Ali",
   "canonicalId": "V63",
   "canonicalState": "blocked",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "necessity": "needed-for-demo",
   "necessitySource": "plan v0.2 (materials/handoff/2026-10-31_0102_audit-v2.4/DRAFT_MAKKI_PROJECT_PLAN_2026-10-31_v0.2.md, generated 2026-10-31): card gear-ware \"Warehouse, loadouts, inventory and materials\" on finish line 1",
   "necessityVia": "the canonical row V63's tag (tracker.json, reconciled over all 566 live rows)",
   "necessityWord": "Needed for the demo",
   "plainTitle": "Stock moves out of inventory onto the project, cost-coded, estimates versus actuals",
   "outcome": "Needs Ali: not started — it waits on the owner.",
   "next": "Waits on Owner: his equipment list",
   "group": "area-gear",
   "groupName": "Equipment / QR / Inventory",
   "alsoAreas": [
    "Finance / QuickBooks"
   ],
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "not-live",
   "liveWord": "not on the live build"
  },
  {
   "id": "V64",
   "whose": "build",
   "part": "walkthrough",
   "cat": "Equipment & inventory",
   "title": "Reporting Center → Project Inventory Report: everything ordered, returned or consumed on a project, in real time",
   "status": "open",
   "ask": "Owner: \"That's great.\" @21:20 — said straight after Dan finished the Project Inventory Report (L263). Moved here from V26 and V55 (raw-transcript pass, 2026-09-16)",
   "askKind": "liked",
   "source": "@19:01",
   "lands": "",
   "note": "",
   "needs": "Waits on Owner: his equipment list",
   "link": "ali-equipment",
   "key": "V64",
   "mapVia": "own id",
   "status5": "needs-ali",
   "status5Via": "canonical V64: state blocked, waiting on the owner",
   "status5Word": "Needs Ali",
   "canonicalId": "V64",
   "canonicalState": "blocked",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "necessity": "needed-for-demo",
   "necessitySource": "plan v0.2 (materials/handoff/2026-10-31_0102_audit-v2.4/DRAFT_MAKKI_PROJECT_PLAN_2026-10-31_v0.2.md, generated 2026-10-31): card gear-ware \"Warehouse, loadouts, inventory and materials\" on finish line 1",
   "necessityVia": "the canonical row V64's tag (tracker.json, reconciled over all 566 live rows)",
   "necessityWord": "Needed for the demo",
   "plainTitle": "Reporting Center → Project Inventory Report: everything ordered, returned or consumed on…",
   "outcome": "Needs Ali: not started — it waits on the owner.",
   "next": "Waits on Owner: his equipment list",
   "group": "area-gear",
   "groupName": "Equipment / QR / Inventory",
   "alsoAreas": [
    "Finance / QuickBooks"
   ],
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "not-live",
   "liveWord": "not on the live build"
  },
  {
   "id": "V65",
   "whose": "build",
   "part": "walkthrough",
   "cat": "Setting up a job",
   "title": "Projects come over from QuickBooks, or you press the big button",
   "status": "part",
   "ask": "The owner asked for the QuickBooks half @8:00",
   "askKind": "asked",
   "source": "@21:26",
   "lands": "5, 6",
   "note": "jobs exist; nothing comes from QuickBooks and there is no \"new job\" button",
   "needs": "Waits on Owner: fifteen minutes on QuickBooks Online",
   "link": "ali-quickbooks",
   "key": "V65",
   "mapVia": "own id",
   "status5": "needs-ali",
   "status5Via": "canonical V65: state partial, waiting on the owner",
   "status5Word": "Needs Ali",
   "canonicalId": "V65",
   "canonicalState": "partial",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "necessity": "needed-for-launch",
   "necessitySource": "plan v0.2 (materials/handoff/2026-10-31_0102_audit-v2.4/DRAFT_MAKKI_PROJECT_PLAN_2026-10-31_v0.2.md, generated 2026-10-31): card fin-qbo \"QuickBooks Online connection, first import and The Books\" on finish line 2",
   "necessityVia": "the canonical row V65's tag (tracker.json, reconciled over all 566 live rows)",
   "necessityWord": "Needed for launch",
   "plainTitle": "Projects come over from QuickBooks, or you press the big button",
   "outcome": "Needs Ali: partly built — it waits on the owner.",
   "next": "Waits on Owner: fifteen minutes on QuickBooks Online",
   "group": "area-fin",
   "groupName": "Finance / QuickBooks",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "not-live",
   "liveWord": "not on the live build"
  },
  {
   "id": "V66",
   "whose": "build",
   "part": "walkthrough",
   "cat": "Setting up a job",
   "title": "Project details = the project book: name, number, night shift, crew list, loss type, projected work days, scope of work, address",
   "status": "done",
   "ask": "This is the screen the owner called a perfect fit: \"there's nothing I could think of that we would need added.\" @24:07",
   "askKind": "shown",
   "source": "@21:26",
   "lands": "6, A22",
   "note": "2026-09-20 — Job setup → Details adds the night-shift switch, a shift window and a loss type, shown as chips on the job and as a night/split panel on the Timeline; detailsPane in portal/app-job.js, gated by R.jobDetails",
   "needs": "",
   "link": "",
   "key": "V66",
   "mapVia": "own id",
   "status5": "completed",
   "status5Via": "canonical V66: state complete, waiting on none",
   "status5Word": "Completed",
   "canonicalId": "V66",
   "canonicalState": "complete",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "plainTitle": "Project details = the project book: name, number, night shift, crew list, loss type…",
   "outcome": "Completed on demo data: built, recorded finished in the task accounting of 31 October 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come.",
   "group": "area-mgmt",
   "groupName": "Management (owner · PM · lead)",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "id": "V67",
   "whose": "build",
   "part": "walkthrough",
   "cat": "Setting up a job",
   "title": "Permits and notifications in the book, with expiry warnings, visible to the field",
   "status": "part",
   "ask": "Fieldflo showed — The owner said nothing (raw-transcript pass, 2026-09-16)",
   "askKind": "shown",
   "source": "@21:26",
   "lands": "6, A22, 27",
   "note": "permits, their numbers, issuers, expiries and 30/60-day warning states are there and the site lead sees them; the permit document itself is not held",
   "needs": "Waits on Owner: a couple of real permits",
   "link": "ali-permits",
   "key": "V67",
   "mapVia": "own id",
   "status5": "needs-ali",
   "status5Via": "canonical V67: state partial, waiting on the owner",
   "status5Word": "Needs Ali",
   "canonicalId": "V67",
   "canonicalState": "partial",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "necessity": "needed-for-demo",
   "necessitySource": "plan v0.2 (materials/handoff/2026-10-31_0102_audit-v2.4/DRAFT_MAKKI_PROJECT_PLAN_2026-10-31_v0.2.md, generated 2026-10-31): card safe-lib \"Safety document library, permits and credential controls\" on finish line 1",
   "necessityVia": "the canonical row V67's tag (tracker.json, reconciled over all 566 live rows)",
   "necessityWord": "Needed for the demo",
   "plainTitle": "Permits and notifications in the book, with expiry warnings, visible to the field",
   "outcome": "Needs Ali: partly built — it waits on the owner.",
   "next": "Waits on Owner: a couple of real permits",
   "group": "area-safe",
   "groupName": "Safety · Tickets · People",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "not-live",
   "liveWord": "not on the live build"
  },
  {
   "id": "V68",
   "whose": "build",
   "part": "walkthrough",
   "cat": "Setting up a job",
   "title": "Per diem on the project",
   "status": "done",
   "ask": "Fieldflo showed",
   "askKind": "shown",
   "source": "@21:26",
   "lands": "",
   "note": "2026-09-20 — a Per diem tab on the job: applies switch, rate, unit, men, days and the job total; perDiemPane in portal/app-job.js, owner and site lead only",
   "needs": "",
   "link": "",
   "key": "V68",
   "mapVia": "own id",
   "status5": "completed",
   "status5Via": "canonical V68: state complete, waiting on none",
   "status5Word": "Completed",
   "canonicalId": "V68",
   "canonicalState": "complete",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "plainTitle": "Per diem on the project",
   "outcome": "Completed on demo data: built, recorded finished in the task accounting of 31 October 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come.",
   "group": "area-mgmt",
   "groupName": "Management (owner · PM · lead)",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "id": "V69",
   "whose": "build",
   "part": "walkthrough",
   "cat": "Setting up a job",
   "title": "What certs and trainings are mandatory for this project — set once, then checked when you schedule people and when they go on the timesheet",
   "status": "done",
   "ask": "Fieldflo showed — The owner said nothing. The refusal is ours, not his ask (raw-transcript pass, 2026-09-16)",
   "askKind": "shown",
   "source": "@21:26, @25:57",
   "lands": "6, 7, 13, 28, 31, 33, A17, A36",
   "note": "and ours refuses rather than warning. Trainings are not covered, only tickets",
   "needs": "",
   "link": "",
   "completedPortion": "the tickets half: set once, then checked at scheduling and on the timesheet",
   "remainderId": "V69-rest",
   "key": "V69",
   "mapVia": "own id",
   "status5": "completed",
   "status5Via": "canonical V69: state complete, waiting on none",
   "status5Word": "Completed",
   "canonicalId": "V69",
   "coveredBy": {
    "gl": "V69",
    "extent": "partly",
    "source": "profile/Master_List_2026-09-16.md:337 (V69): \"Built — and ours refuses rather than warning. Trainings are not covered, only tickets\" (raw-transcript pass, 2026-09-16); no grade file names V69 in the canonical accounting v2.4 (2026-10-31)",
    "uncovered": "trainings are not covered, only tickets, and it refuses rather than warns",
    "why": "the bundled Completed covers the mandatory-cert check on scheduling and the timesheet; trainings and a warning instead of a refusal are not in it",
    "glState": "complete",
    "glTitle": "What certs and trainings are mandatory for this project — set once, then checked when you schedule people and when they go on the timesheet",
    "gradeFile": null,
    "accepted": false
   },
   "canonicalState": "complete",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "plainTitle": "What certs and trainings are mandatory for this project — set once, then checked when…",
   "outcome": "Completed on demo data: the tickets half: set once, then checked at scheduling and on the timesheet; the rest is its own row.",
   "next": "Nothing further here: the rest sits on its own row, V69-rest.",
   "group": "area-safe",
   "groupName": "Safety · Tickets · People",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "id": "V70",
   "whose": "build",
   "part": "walkthrough",
   "cat": "Setting up a job",
   "title": "Cost codes for the job, mirroring your own naming",
   "status": "done",
   "ask": "Fieldflo showed",
   "askKind": "shown",
   "source": "@21:26",
   "lands": "6, 26, A24",
   "note": "7 codes, budget vs spent per code",
   "needs": "",
   "link": "",
   "key": "V70",
   "mapVia": "own id",
   "status5": "completed",
   "status5Via": "canonical V70: state complete, waiting on none",
   "status5Word": "Completed",
   "canonicalId": "V70",
   "canonicalState": "complete",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "plainTitle": "Cost codes for the job, mirroring your own naming",
   "outcome": "Completed on demo data: built, recorded finished in the task accounting of 31 October 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come.",
   "group": "area-fin",
   "groupName": "Finance / QuickBooks",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "id": "V71",
   "whose": "build",
   "part": "walkthrough",
   "cat": "Setting up a job",
   "title": "Building and owner information on the project",
   "status": "done",
   "ask": "Fieldflo showed",
   "askKind": "shown",
   "source": "@21:26",
   "lands": "5, 6",
   "note": "2026-09-20 — a Building & owner tab: the building (use, storeys, year, area, construction, occupancy, access, parking, keys, site contact) and a building-owner record held separately from the client; buildingPane in portal/app-job.js",
   "needs": "",
   "link": "",
   "key": "V71",
   "mapVia": "own id",
   "status5": "completed",
   "status5Via": "canonical V71: state complete, waiting on none",
   "status5Word": "Completed",
   "canonicalId": "V71",
   "canonicalState": "complete",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "plainTitle": "Building and owner information on the project",
   "outcome": "Completed on demo data: built, recorded finished in the task accounting of 31 October 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come.",
   "group": "area-mgmt",
   "groupName": "Management (owner · PM · lead)",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "id": "V72",
   "whose": "build",
   "part": "walkthrough",
   "cat": "Setting up a job",
   "title": "Waste reporting: haulers, material types, truck types, landfills",
   "status": "done",
   "ask": "Fieldflo showed — The owner said nothing (raw-transcript pass, 2026-09-16)",
   "askKind": "shown",
   "source": "@21:26",
   "lands": "6, A22, A31",
   "note": "2026-09-20 — a Waste loads tab: by-material and by-truck breakdowns and one row per load (date, material, truck, hauler, landfill, tonnes, manifest, logged by) with an add-a-load form; wastePane in portal/app-job.js, vocabularies in portal/ops-job.js. Added loads live on the device only and do not rewrite the old static hauler line",
   "needs": "",
   "link": "",
   "key": "V72",
   "mapVia": "own id",
   "status5": "completed",
   "status5Via": "canonical V72: state complete, waiting on none",
   "status5Word": "Completed",
   "canonicalId": "V72",
   "canonicalState": "complete",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "plainTitle": "Waste reporting: haulers, material types, truck types, landfills",
   "outcome": "Completed on demo data: built, recorded finished in the task accounting of 31 October 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come.",
   "group": "area-mgmt",
   "groupName": "Management (owner · PM · lead)",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "id": "V73",
   "whose": "build",
   "part": "walkthrough",
   "cat": "Setting up a job",
   "title": "Custom tabs on the project",
   "status": "done",
   "ask": "Fieldflo showed",
   "askKind": "shown",
   "source": "@21:26",
   "lands": "",
   "note": "2026-09-20 — custom tabs in the job's tab strip, plus a + Tab pane to name a tab, list its fields and choose who may open it; customPane / addTabPane in portal/app-job.js, and R.customTabsFor drops a tab a role is not on, so a custom tab cannot widen gating. Four text fields per tab, audience owner-only or owner + site lead",
   "needs": "",
   "link": "",
   "key": "V73",
   "mapVia": "own id",
   "status5": "completed",
   "status5Via": "canonical V73: state complete, waiting on none",
   "status5Word": "Completed",
   "canonicalId": "V73",
   "canonicalState": "complete",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "plainTitle": "Custom tabs on the project",
   "outcome": "Completed on demo data: built, recorded finished in the task accounting of 31 October 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come.",
   "group": "area-mgmt",
   "groupName": "Management (owner · PM · lead)",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "id": "V74",
   "whose": "build",
   "part": "walkthrough",
   "cat": "Setting up a job",
   "title": "Templates — \"for these projects, I want you to answer these questions\"",
   "status": "part",
   "ask": "Fieldflo showed",
   "askKind": "shown",
   "source": "@21:26",
   "lands": "",
   "note": "2026-09-20 — the Questions tab lets you attach a template to a job, see the ones suggested for its work type, answer them and save; questionsPane in portal/app-job.js. There is still no builder — the three templates are hard-coded in portal/ops-job.js and nothing in the app creates, renames or edits a question",
   "needs": "Nothing blocks it: the hive builds it on demo data",
   "link": "",
   "key": "V74",
   "mapVia": "own id",
   "status5": "completed",
   "status5Via": "canonical V74: state review, waiting on none",
   "status5Word": "Completed",
   "canonicalId": "V74",
   "coveredBy": {
    "gl": "GL-002",
    "extent": "covered",
    "source": "GO_LIVE.md row GL-002 (profile/Master_List_2026-09-16.md:486, V74) (written 2026-09-26, State re-printed 2026-10-04): Built — wave gl-wave2-forms, criteria and run 2026-09-27 (hive/checks/2026-09-27_gl-wave2-forms.md); state review in the canonical accounting v2.4 (2026-10-31)",
    "uncovered": null,
    "why": "the V row asks for question templates per project; GL-002 adds the template builder the row's note said was missing",
    "glState": "review",
    "glTitle": "Question templates per project: you can attach a template to a job and answer it, but nothing in the app creates or edits one — still needs a template builder",
    "gradeFile": "hive/checks/2026-09-27_gl-wave2-forms.md",
    "accepted": false
   },
   "canonicalState": "review",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "plainTitle": "Templates — \"for these projects, I want you to answer these questions\"",
   "outcome": "Completed on demo data: a later go-live row built this and reported it finished; the older wording of this row is kept in its details.",
   "next": "Nothing left to build here: the later row that built it carries the report and its review record.",
   "group": "area-mgmt",
   "groupName": "Management (owner · PM · lead)",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "id": "V75",
   "whose": "build",
   "part": "walkthrough",
   "cat": "Setting up a job",
   "title": "Insurance on the project",
   "status": "done",
   "ask": "Fieldflo showed",
   "askKind": "shown",
   "source": "@21:26",
   "lands": "",
   "note": "2026-09-20 — an Insurance tab: carrier, policy, claim, expiry with an in-force / expiring / expired pill, certificate holder, WCB account and the adjuster; deductible and limit are dropped from the object entirely for anyone but the owner. insurancePane in portal/app-job.js",
   "needs": "",
   "link": "",
   "key": "V75",
   "mapVia": "own id",
   "status5": "completed",
   "status5Via": "canonical V75: state complete, waiting on none",
   "status5Word": "Completed",
   "canonicalId": "V75",
   "canonicalState": "complete",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "plainTitle": "Insurance on the project",
   "outcome": "Completed on demo data: built, recorded finished in the task accounting of 31 October 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come.",
   "group": "area-mgmt",
   "groupName": "Management (owner · PM · lead)",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "id": "V76",
   "whose": "build",
   "part": "walkthrough",
   "cat": "Setting up a job",
   "title": "Emergency contact filled in once, landing on the daily safety meeting every day automatically",
   "status": "done",
   "ask": "Fieldflo showed",
   "askKind": "shown",
   "source": "@21:26",
   "lands": "",
   "note": "2026-09-20 — filled once on the job's Emergency tab (contact, muster point, first aider, cross street, hospital, second call), then printed above the pre-job safety talk on the lead's Start Day and on the crew's Today, every day, with no re-typing; emergencyPane + the PAGES.lead.startday wrap in portal/app-job.js. It is a panel beside the talk, not a line inside the talk's checklist",
   "needs": "",
   "link": "",
   "key": "V76",
   "mapVia": "own id",
   "status5": "completed",
   "status5Via": "canonical V76: state complete, waiting on none",
   "status5Word": "Completed",
   "canonicalId": "V76",
   "canonicalState": "complete",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "plainTitle": "Emergency contact filled in once, landing on the daily safety meeting every day…",
   "outcome": "Completed on demo data: built, recorded finished in the task accounting of 31 October 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come.",
   "group": "area-mgmt",
   "groupName": "Management (owner · PM · lead)",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "id": "V77",
   "whose": "build",
   "part": "walkthrough",
   "cat": "Setting up a job",
   "title": "Job costing estimates on the project",
   "status": "done",
   "ask": "Fieldflo showed",
   "askKind": "shown",
   "source": "@21:26",
   "lands": "5, 6, 26, A24",
   "note": "",
   "needs": "",
   "link": "",
   "key": "V77",
   "mapVia": "own id",
   "status5": "completed",
   "status5Via": "canonical V77: state complete, waiting on none",
   "status5Word": "Completed",
   "canonicalId": "V77",
   "canonicalState": "complete",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "plainTitle": "Job costing estimates on the project",
   "outcome": "Completed on demo data: built, recorded finished in the task accounting of 31 October 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come.",
   "group": "area-fin",
   "groupName": "Finance / QuickBooks",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "id": "V78",
   "whose": "build",
   "part": "walkthrough",
   "cat": "Setting up a job",
   "title": "Proposal builder: send the proposal with bid items to the client; if it is awarded, they drop in",
   "status": "part",
   "ask": "Fieldflo showed — The owner said nothing (raw-transcript pass, 2026-09-16)",
   "askKind": "shown",
   "source": "@21:26",
   "lands": "4, 25, A33",
   "note": "the proposal is built and printable; it is not sent from the app, and there are no bid-item lines, only a single price",
   "needs": "Waits on Owner: a handful of past quotes",
   "link": "ali-quotes",
   "key": "V78",
   "mapVia": "own id",
   "status5": "needs-ali",
   "status5Via": "canonical V78: state partial, waiting on the owner",
   "status5Word": "Needs Ali",
   "canonicalId": "V78",
   "canonicalState": "partial",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "necessity": "needed-for-demo",
   "necessitySource": "plan v0.2 (materials/handoff/2026-10-31_0102_audit-v2.4/DRAFT_MAKKI_PROJECT_PLAN_2026-10-31_v0.2.md, generated 2026-10-31): card sales-quotes \"Quotes, pipeline, proposals and bid items\" on finish line 1",
   "necessityVia": "the canonical row V78's tag (tracker.json, reconciled over all 566 live rows)",
   "necessityWord": "Needed for the demo",
   "plainTitle": "Proposal builder: send the proposal with bid items to the client; if it is awarded, they…",
   "outcome": "Needs Ali: partly built — it waits on the owner.",
   "next": "Waits on Owner: a handful of past quotes",
   "group": "area-sales",
   "groupName": "Sales / Estimating",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "not-live",
   "liveWord": "not on the live build"
  },
  {
   "id": "V79",
   "whose": "build",
   "part": "walkthrough",
   "cat": "Setting up a job",
   "title": "Add bid items by hand or from an Excel sheet",
   "status": "open",
   "ask": "Fieldflo showed",
   "askKind": "shown",
   "source": "@21:26",
   "lands": "",
   "note": "",
   "needs": "Waits on Owner: a handful of past quotes",
   "link": "ali-quotes",
   "key": "V79",
   "mapVia": "alias, same title",
   "mapEvidence": "GL-010 lists V79 as its alias under this row's own title — canonical accounting v2.4 (materials/canonical/2026-10-31_canonical-tasks.v2.4.json, generated 2026-10-31)",
   "status5": "needs-ali",
   "status5Via": "canonical GL-010: state blocked, waiting on the owner",
   "status5Word": "Needs Ali",
   "canonicalId": "GL-010",
   "canonicalState": "blocked",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "necessity": "needed-for-demo",
   "necessitySource": "plan v0.2 (materials/handoff/2026-10-31_0102_audit-v2.4/DRAFT_MAKKI_PROJECT_PLAN_2026-10-31_v0.2.md, generated 2026-10-31): card sales-quotes \"Quotes, pipeline, proposals and bid items\" on finish line 1",
   "necessityVia": "the canonical row GL-010's tag (tracker.json, reconciled over all 566 live rows)",
   "necessityWord": "Needed for the demo",
   "plainTitle": "Add bid items by hand or from an Excel sheet",
   "outcome": "Needs Ali: not started — it waits on the owner.",
   "next": "Waits on Owner: a handful of past quotes",
   "group": "area-sales",
   "groupName": "Sales / Estimating",
   "alsoAreas": [
    "Finance / QuickBooks"
   ],
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "not-live",
   "liveWord": "not on the live build"
  },
  {
   "id": "V80",
   "whose": "build",
   "part": "walkthrough",
   "cat": "Setting up a job",
   "title": "Every project has its own document system",
   "status": "part",
   "ask": "Fieldflo showed",
   "askKind": "shown",
   "source": "@21:26",
   "lands": "A23, A30",
   "note": "each job links the documents it needs; all 11 are placeholders and nothing can be uploaded",
   "needs": "Waits on Owner: his OHS documents (JHAs, SWPs, toolbox talks)",
   "link": "ali-ohs",
   "key": "V80",
   "mapVia": "own id",
   "status5": "needs-ali",
   "status5Via": "canonical V80: state partial, waiting on the owner",
   "status5Word": "Needs Ali",
   "canonicalId": "V80",
   "canonicalState": "partial",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "necessity": "needed-for-demo",
   "necessitySource": "plan v0.2 (materials/handoff/2026-10-31_0102_audit-v2.4/DRAFT_MAKKI_PROJECT_PLAN_2026-10-31_v0.2.md, generated 2026-10-31): card mgmt-docs \"Documents, photos, drawings and the closeout report\" on finish line 1",
   "necessityVia": "the canonical row V80's tag (tracker.json, reconciled over all 566 live rows)",
   "necessityWord": "Needed for the demo",
   "plainTitle": "Every project has its own document system",
   "outcome": "Needs Ali: partly built — it waits on the owner.",
   "next": "Waits on Owner: his OHS documents (JHAs, SWPs, toolbox talks)",
   "group": "area-mgmt",
   "groupName": "Management (owner · PM · lead)",
   "alsoAreas": [
    "Safety · Tickets · People"
   ],
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "not-live",
   "liveWord": "not on the live build"
  },
  {
   "id": "V81",
   "whose": "build",
   "part": "walkthrough",
   "cat": "Setting up a job",
   "title": "A closeout report with the dailies, certs and documents in it",
   "status": "done",
   "ask": "Fieldflo showed — The owner said nothing (raw-transcript pass, 2026-09-16)",
   "askKind": "shown",
   "source": "@21:26, @36:37",
   "lands": "A31, A32",
   "note": "2026-09-20 — the closeout now prints Daily reports (date, crew, men, hours, shift window, safety talk, what happened, totals) and Crew tickets on this job (every man × every required ticket, number, expiry, status) above the sign-off; dailiesSection / certsSection / injectCloseout in portal/app-job.js, fed by R.jobDailies and R.jobCrewCerts",
   "needs": "",
   "link": "",
   "key": "V81",
   "mapVia": "own id",
   "status5": "completed",
   "status5Via": "canonical V81: state complete, waiting on none",
   "status5Word": "Completed",
   "canonicalId": "V81",
   "canonicalState": "complete",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "plainTitle": "A closeout report with the dailies, certs and documents in it",
   "outcome": "Completed on demo data: built, recorded finished in the task accounting of 31 October 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come.",
   "group": "area-mgmt",
   "groupName": "Management (owner · PM · lead)",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "id": "V83",
   "whose": "build",
   "part": "walkthrough",
   "cat": "The field day",
   "title": "The foreman opens the app and sees only projects, in any language",
   "status": "part",
   "ask": "Fieldflo showed",
   "askKind": "shown",
   "source": "@24:23",
   "lands": "27–36",
   "note": "he sees 10 focused tabs; the app is English only (only the speech-to-text takes 6 languages)",
   "needs": "The remainder: a second language for the foreman's screens; the ten focused tabs he opens are already built, in English only.",
   "link": "",
   "needsBefore": "Nothing blocks it: the hive builds it on demo data",
   "key": "V83",
   "mapVia": "own id",
   "status5": "not-done",
   "status5Via": "canonical V83: state partial, waiting on none",
   "status5Word": "Not done",
   "canonicalId": "V83",
   "canonicalState": "partial",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "necessity": "needed-for-demo",
   "necessitySource": "plan v0.2 (materials/handoff/2026-10-31_0102_audit-v2.4/DRAFT_MAKKI_PROJECT_PLAN_2026-10-31_v0.2.md, generated 2026-10-31): card crew-lang \"Languages and dictation\" on finish line 1",
   "necessityVia": "the canonical row V83's tag (tracker.json, reconciled over all 566 live rows)",
   "necessityWord": "Needed for the demo",
   "plainTitle": "The foreman opens the app and sees only projects, in any language",
   "outcome": "Not done: partly built.",
   "next": "The remainder: a second language for the foreman's screens; the ten focused tabs he opens are already built, in English only.",
   "group": "area-crew",
   "groupName": "Crew (the field day)",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "not-live",
   "liveWord": "not on the live build"
  },
  {
   "id": "V84",
   "whose": "build",
   "part": "walkthrough",
   "cat": "The field day",
   "title": "Press Start day and the day's paperwork appears — \"a timesheet, a JHA, an inspection, and a daily\"",
   "status": "done",
   "ask": "The owner confirmed this is what his crews fill out",
   "askKind": "asked",
   "source": "@24:23; the owner confirmed: \"Yeah.\" @25:39 and @4:26",
   "lands": "28",
   "note": "2026-09-20 — Start Day now carries the inspection too: a Site inspection block (kind, result, notes) on the Start Day page, inspPanel in portal/app-day.js, filed into the same safety store the Safety page reads",
   "needs": "",
   "link": "",
   "key": "V84",
   "mapVia": "own id",
   "status5": "completed",
   "status5Via": "canonical V84: state complete, waiting on none",
   "status5Word": "Completed",
   "canonicalId": "V84",
   "canonicalState": "complete",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "plainTitle": "Press Start day and the day's paperwork appears — \"a timesheet, a JHA, an inspection…",
   "outcome": "Completed on demo data: built, recorded finished in the task accounting of 31 October 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come.",
   "group": "area-crew",
   "groupName": "Crew (the field day)",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "id": "V85",
   "whose": "build",
   "part": "walkthrough",
   "cat": "The field day",
   "title": "Timesheet head start: three dots → Same as previous day",
   "status": "done",
   "ask": "Fieldflo showed",
   "askKind": "shown",
   "source": "@25:57",
   "lands": "",
   "note": "2026-09-20 — Start Day — same as <last day worked> on the Start Day screen and on the open timesheet, copying that day's hours and cost codes per man; prevDay / #sdStartPrev / #tsPrev in portal/app-day.js. The 8 h head start is still there as the second button",
   "needs": "",
   "link": "",
   "key": "V85",
   "mapVia": "own id",
   "status5": "completed",
   "status5Via": "canonical V85: state complete, waiting on none",
   "status5Word": "Completed",
   "canonicalId": "V85",
   "canonicalState": "complete",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "plainTitle": "Timesheet head start: three dots → Same as previous day",
   "outcome": "Completed on demo data: built, recorded finished in the task accounting of 31 October 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come.",
   "group": "area-crew",
   "groupName": "Crew (the field day)",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "id": "V86",
   "whose": "build",
   "part": "walkthrough",
   "cat": "The field day",
   "title": "Timesheet head start: Pull from scheduling",
   "status": "part",
   "ask": "Fieldflo showed",
   "askKind": "shown",
   "source": "@25:57",
   "lands": "28",
   "note": "the Start Day screen now reads the board through R.visibleSchedule and names the crew the board has on the chosen site, re-reading it when the site changes (boardCrewFor in portal/app-day.js); the men themselves are still the login's own crew — startPanel is called with cur().crew and begin() saves under it, so a different crew on the board does not change the tick-box list",
   "needs": "Nothing blocks it: the hive builds it on demo data",
   "link": "",
   "key": "V86",
   "mapVia": "own id",
   "status5": "completed",
   "status5Via": "canonical V86: state complete, waiting on none",
   "status5Word": "Completed",
   "canonicalId": "V86",
   "coveredBy": {
    "gl": "GL-001",
    "extent": "covered",
    "source": "GO_LIVE.md row GL-001 (profile/Not_Built_Why_2026-09-16.md:413; written 2026-09-26): Built — batch5-time-crew, graded 2026-10-10 (hive/checks/2026-10-10_batch5-time-crew.r2.grade.md); ruled \"holds\" 2026-10-25 (hive/checks/2026-10-25_workflows-b1.r1c.grade.md:22); state complete, accepted, in the canonical accounting v2.4 (2026-10-31)",
    "uncovered": null,
    "why": "the V row asks for the timesheet head start pulled from the schedule; GL-001 is that pull, graded and ruled",
    "glState": "complete",
    "glTitle": "Timesheet head start: \"pull from the schedule\" does not really pull — the men on the sheet are still the login's own crew, and there is no man list on the sc…",
    "gradeFile": "hive/checks/2026-10-10_batch5-time-crew.r2.grade.md",
    "accepted": true
   },
   "canonicalState": "complete",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "plainTitle": "Timesheet head start: Pull from scheduling",
   "outcome": "Completed on demo data: a later go-live row built this and reported it finished; the older wording of this row is kept in its details.",
   "next": "Nothing left to build here: the later row that built it carries the report and its review record.",
   "group": "area-crew",
   "groupName": "Crew (the field day)",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "id": "V87",
   "whose": "build",
   "part": "walkthrough",
   "cat": "The field day",
   "title": "Add or delete men on the timesheet based on who really showed up",
   "status": "done",
   "ask": "Fieldflo showed",
   "askKind": "shown",
   "source": "@25:57",
   "lands": "28",
   "note": "2026-09-20 — add a man from a dropdown at any hours, and a bin icon takes a man off the sheet entirely (#tsAdd / data-tsdel in portal/app-day.js); an added man who lacks the site's tickets is flagged through the same R.checkAssign that refuses him on the board. The pick list is his own crew plus unassigned spares",
   "needs": "",
   "link": "",
   "key": "V87",
   "mapVia": "own id",
   "status5": "completed",
   "status5Via": "canonical V87: state complete, waiting on none",
   "status5Word": "Completed",
   "canonicalId": "V87",
   "canonicalState": "complete",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "plainTitle": "Add or delete men on the timesheet based on who really showed up",
   "outcome": "Completed on demo data: built, recorded finished in the task accounting of 31 October 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come.",
   "group": "area-crew",
   "groupName": "Crew (the field day)",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "id": "V88",
   "whose": "build",
   "part": "walkthrough",
   "cat": "The field day",
   "title": "A man without the right certs: the add is refused, and the office is told",
   "status": "part",
   "ask": "Fieldflo showed — The owner said nothing. Blocking instead of warning is ours, not his ask (raw-transcript pass, 2026-09-16)",
   "askKind": "shown",
   "source": "@25:57",
   "lands": "28, A17, A36",
   "note": "ours blocks instead of warning, which is stronger; the office email is written on screen as a demo note and nothing is sent",
   "needs": "The office address a certificate alert would go to, and the owner's rule on whether an email goes at all; the app refuses the add today and nothing is emailed.",
   "link": "ali-textnumber",
   "needsBefore": "Waits on the texting number (the owner says yes, Omar buys it) and the crew's mobiles",
   "key": "V88",
   "mapVia": "own id",
   "status5": "needs-both",
   "status5Via": "canonical V88: state partial, waiting on Both",
   "status5Word": "Needs both",
   "canonicalId": "V88",
   "canonicalState": "partial",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "necessity": "needed-for-demo",
   "necessitySource": "plan v0.2 (materials/handoff/2026-10-31_0102_audit-v2.4/DRAFT_MAKKI_PROJECT_PLAN_2026-10-31_v0.2.md, generated 2026-10-31): card safe-lib \"Safety document library, permits and credential controls\" on finish line 1",
   "necessityVia": "the canonical row V88's tag (tracker.json, reconciled over all 566 live rows)",
   "necessityWord": "Needed for the demo",
   "plainTitle": "A man without the right certs: the add is refused, and the office is told",
   "outcome": "Needs both Omar and the owner: the add is refused today; the ask is whether a blocked attempt emails the office, or an explicitly proposed override.",
   "next": "Omar and the owner answer which of the two emails is wanted; the refusal stays as it is and the warning is not built.",
   "readingWas": {
    "title": "A man added without the right certs: the supervisor is warned, and if he is added anyway an email goes to the office",
    "outcome": "Needs both Omar and the owner — partly built; a joint word closes it.",
    "next": "The office address a certificate alert would go, and the owner's rule on whether an email goes at all; the app refuses the add today and nothing is emailed."
   },
   "titleAsRecorded": "A man added without the right certs: the supervisor is warned, and if he is added anyway an email goes to the office",
   "currentReading": {
    "source": "portal/app-crew.js and the A17 / A36 rows of the canonical accounting v2.4 of 2026-10-31 (read 2026-11-08): the app refuses the add and names every missing ticket; no warning path and no email are built, and the office line is written on screen as a demo note.",
    "why": "the recorded title said the man is \"added anyway\", which presupposes the add succeeds against the refusal the app actually enforces; the two emails — a blocked attempt, and an explicitly proposed override — are different asks and had never been told apart"
   },
   "group": "area-safe",
   "groupName": "Safety · Tickets · People",
   "alsoAreas": [
    "Office / Admin / Helpers"
   ],
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "not-live",
   "liveWord": "not on the live build"
  },
  {
   "id": "V89",
   "whose": "build",
   "part": "walkthrough",
   "cat": "The field day",
   "title": "A cost code per man on the timesheet, mirroring the company codes, defaultable",
   "status": "done",
   "ask": "Fieldflo showed",
   "askKind": "shown",
   "source": "@25:57",
   "lands": "",
   "note": "2026-09-20 — a cost-code select on every man's line of the Start Day timesheet, the same codes the job budgets use, defaulted from his trade and rolled up per code above the table; pickCode / codeSelect in portal/app-day.js, defaults in portal/ops-day.js",
   "needs": "",
   "link": "",
   "key": "V89",
   "mapVia": "own id",
   "status5": "completed",
   "status5Via": "canonical V89: state complete, waiting on none",
   "status5Word": "Completed",
   "canonicalId": "V89",
   "canonicalState": "complete",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "plainTitle": "A cost code per man on the timesheet, mirroring the company codes, defaultable",
   "outcome": "Completed on demo data: built, recorded finished in the task accounting of 31 October 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come.",
   "group": "area-crew",
   "groupName": "Crew (the field day)",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "id": "V90",
   "whose": "build",
   "part": "walkthrough",
   "cat": "The field day",
   "title": "Pick who is starting → Start; the supervisor controls the timesheet, each labourer verifies",
   "status": "part",
   "ask": "Fieldflo showed",
   "askKind": "shown",
   "source": "@25:57",
   "lands": "28, 38",
   "note": "the foreman controls it and each man verifies, but in his own login, not by text",
   "needs": "Nothing blocks it: the hive builds it on demo data",
   "link": "",
   "key": "V90",
   "mapVia": "own id",
   "status5": "not-done",
   "status5Via": "canonical V90: state partial, waiting on none",
   "status5Word": "Not done",
   "canonicalId": "V90",
   "canonicalState": "partial",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "necessity": "needed-for-demo",
   "necessitySource": "plan v0.2 (materials/handoff/2026-10-31_0102_audit-v2.4/DRAFT_MAKKI_PROJECT_PLAN_2026-10-31_v0.2.md, generated 2026-10-31): card crew-startday \"Start Day, timesheet head start and the daily report\" on finish line 1",
   "necessityVia": "the canonical row V90's tag (tracker.json, reconciled over all 566 live rows)",
   "necessityWord": "Needed for the demo",
   "plainTitle": "Pick who is starting → Start; the supervisor controls the timesheet, each labourer…",
   "outcome": "Not done: partly built.",
   "next": "Nothing blocks it: the hive builds it on demo data",
   "group": "area-crew",
   "groupName": "Crew (the field day)",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "not-live",
   "liveWord": "not on the live build"
  },
  {
   "id": "V91",
   "whose": "build",
   "part": "walkthrough",
   "cat": "The field day",
   "title": "The labourer gets a text within seconds asking for his location (optional)",
   "status": "open",
   "ask": "Fieldflo showed",
   "askKind": "shown",
   "source": "@25:57",
   "lands": "",
   "note": "no texting, no location",
   "needs": "Waits on the texting number (the owner says yes, Omar buys it) and the crew's mobiles",
   "link": "ali-textnumber",
   "key": "V91",
   "mapVia": "own id",
   "status5": "needs-both",
   "status5Via": "canonical V91: state blocked, waiting on Both",
   "status5Word": "Needs both",
   "canonicalId": "V91",
   "canonicalState": "blocked",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "necessity": "needed-for-launch",
   "necessitySource": "plan v0.2 (materials/handoff/2026-10-31_0102_audit-v2.4/DRAFT_MAKKI_PROJECT_PLAN_2026-10-31_v0.2.md, generated 2026-10-31): card office-textline \"The labourer text line (verify by text, no login)\" on finish line 2",
   "necessityVia": "the canonical row V91's tag (tracker.json, reconciled over all 566 live rows)",
   "necessityWord": "Needed for launch",
   "plainTitle": "The labourer gets a text within seconds asking for his location (optional)",
   "outcome": "Needs both Omar and the owner — not started; a joint word closes it.",
   "next": "Waits on the texting number (the owner says yes, Omar buys it) and the crew's mobiles",
   "group": "area-office",
   "groupName": "Office / Admin / Helpers",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "not-live",
   "liveWord": "not on the live build"
  },
  {
   "id": "V92",
   "whose": "build",
   "part": "walkthrough",
   "cat": "The field day",
   "title": "The office dashboard shows the project started to the second",
   "status": "done",
   "ask": "Fieldflo showed",
   "askKind": "shown",
   "source": "@25:57, @27:47",
   "lands": "2",
   "note": "\"Who's on site today\" carries the start time, the men, whether the talk is closed and how many have confirmed",
   "needs": "",
   "link": "",
   "key": "V92",
   "mapVia": "own id",
   "status5": "completed",
   "status5Via": "canonical V92: state complete, waiting on none",
   "status5Word": "Completed",
   "canonicalId": "V92",
   "canonicalState": "complete",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "plainTitle": "The office dashboard shows the project started to the second",
   "outcome": "Completed on demo data: built, recorded finished in the task accounting of 31 October 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come.",
   "group": "area-crew",
   "groupName": "Crew (the field day)",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "id": "V93",
   "whose": "build",
   "part": "walkthrough",
   "cat": "The field day",
   "title": "The JHA / pre-job safety meeting, with Same as previous day then edit",
   "status": "part",
   "ask": "The owner confirmed his crews do a safety meeting @4:26, @25:39",
   "askKind": "asked",
   "source": "@27:47",
   "lands": "28",
   "note": "a 6-item checklist and a 6-topic picker; no \"same as yesterday\", no free editing",
   "needs": "Waits on Owner: his OHS documents (JHAs, SWPs, toolbox talks)",
   "link": "ali-ohs",
   "key": "V93",
   "mapVia": "own id",
   "status5": "needs-ali",
   "status5Via": "canonical V93: state partial, waiting on the owner",
   "status5Word": "Needs Ali",
   "canonicalId": "V93",
   "canonicalState": "partial",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "necessity": "needed-for-demo",
   "necessitySource": "plan v0.2 (materials/handoff/2026-10-31_0102_audit-v2.4/DRAFT_MAKKI_PROJECT_PLAN_2026-10-31_v0.2.md, generated 2026-10-31): card crew-jha \"JHA / pre-job safety talk, acknowledgements and weather\" on finish line 1",
   "necessityVia": "the canonical row V93's tag (tracker.json, reconciled over all 566 live rows)",
   "necessityWord": "Needed for the demo",
   "plainTitle": "The JHA / pre-job safety meeting, with Same as previous day then edit",
   "outcome": "Needs Ali: partly built — it waits on the owner.",
   "next": "Waits on Owner: his OHS documents (JHAs, SWPs, toolbox talks)",
   "group": "area-crew",
   "groupName": "Crew (the field day)",
   "alsoAreas": [
    "Safety · Tickets · People"
   ],
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "not-live",
   "liveWord": "not on the live build"
  },
  {
   "id": "V94",
   "whose": "build",
   "part": "walkthrough",
   "cat": "The field day",
   "title": "The supervisor enters his PIN to sign the JHA",
   "status": "done",
   "ask": "Fieldflo showed",
   "askKind": "shown",
   "source": "@27:47",
   "lands": "28",
   "note": "2026-09-20 — the JHA / safety talk — supervisor signature panel: closing the talk now reads \"Not signed\" until the supervisor enters his PIN, which is checked against OPSD.SUP_PINS and refused if wrong; jhaPanel in portal/app-day.js. The demo PINs are plaintext in portal/ops-day.js and printed on screen — demo-grade, not a live secret",
   "needs": "",
   "link": "",
   "key": "V94",
   "mapVia": "own id",
   "status5": "completed",
   "status5Via": "canonical V94: state complete, waiting on none",
   "status5Word": "Completed",
   "canonicalId": "V94",
   "canonicalState": "complete",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "plainTitle": "The supervisor enters his PIN to sign the JHA",
   "outcome": "Completed on demo data: built, recorded finished in the task accounting of 31 October 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come.",
   "group": "area-crew",
   "groupName": "Crew (the field day)",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "id": "V95",
   "whose": "build",
   "part": "walkthrough",
   "cat": "The field day",
   "title": "JHA contents: nearest hospital, PPE requirements, personal limitations, hazards, evacuation plan (pulled from the project details), task steps, hazards and controls",
   "status": "part",
   "ask": "Fieldflo showed",
   "askKind": "shown",
   "source": "@27:47",
   "lands": "28",
   "note": "our 6 items cover hazards, PPE, permits and containment, muster point and first-aider, questions, and the right to stop work. No nearest hospital, no personal limitations, no task steps, and nothing is pulled from the project book",
   "needs": "Waits on Owner: his OHS documents (JHAs, SWPs, toolbox talks)",
   "link": "ali-ohs",
   "key": "V95",
   "mapVia": "own id",
   "status5": "needs-ali",
   "status5Via": "canonical V95: state partial, waiting on the owner",
   "status5Word": "Needs Ali",
   "canonicalId": "V95",
   "canonicalState": "partial",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "necessity": "needed-for-demo",
   "necessitySource": "plan v0.2 (materials/handoff/2026-10-31_0102_audit-v2.4/DRAFT_MAKKI_PROJECT_PLAN_2026-10-31_v0.2.md, generated 2026-10-31): card crew-jha \"JHA / pre-job safety talk, acknowledgements and weather\" on finish line 1",
   "necessityVia": "the canonical row V95's tag (tracker.json, reconciled over all 566 live rows)",
   "necessityWord": "Needed for the demo",
   "plainTitle": "JHA contents: nearest hospital, PPE requirements, personal limitations, hazards…",
   "outcome": "Needs Ali: partly built — it waits on the owner.",
   "next": "Waits on Owner: his OHS documents (JHAs, SWPs, toolbox talks)",
   "group": "area-crew",
   "groupName": "Crew (the field day)",
   "alsoAreas": [
    "Safety · Tickets · People"
   ],
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "not-live",
   "liveWord": "not on the live build"
  },
  {
   "id": "V96",
   "whose": "build",
   "part": "walkthrough",
   "cat": "The field day",
   "title": "A task library — \"hit add tasks and they'll select what they're doing, it will automatically fill out the paperwork for them\"",
   "status": "open",
   "ask": "Fieldflo showed",
   "askKind": "shown",
   "source": "@27:47",
   "lands": "",
   "note": "",
   "needs": "Waits on Owner: his OHS documents (JHAs, SWPs, toolbox talks)",
   "link": "ali-ohs",
   "key": "V96",
   "mapVia": "own id",
   "status5": "needs-ali",
   "status5Via": "canonical V96: state blocked, waiting on the owner",
   "status5Word": "Needs Ali",
   "canonicalId": "V96",
   "canonicalState": "blocked",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "necessity": "needed-for-demo",
   "necessitySource": "plan v0.2 (materials/handoff/2026-10-31_0102_audit-v2.4/DRAFT_MAKKI_PROJECT_PLAN_2026-10-31_v0.2.md, generated 2026-10-31): card crew-jha \"JHA / pre-job safety talk, acknowledgements and weather\" on finish line 1",
   "necessityVia": "the canonical row V96's tag (tracker.json, reconciled over all 566 live rows)",
   "necessityWord": "Needed for the demo",
   "plainTitle": "A task library — \"hit add tasks and they'll select what they're doing, it will…",
   "outcome": "Needs Ali: not started — it waits on the owner.",
   "next": "Waits on Owner: his OHS documents (JHAs, SWPs, toolbox talks)",
   "group": "area-crew",
   "groupName": "Crew (the field day)",
   "alsoAreas": [
    "Safety · Tickets · People"
   ],
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "not-live",
   "liveWord": "not on the live build"
  },
  {
   "id": "V97",
   "whose": "build",
   "part": "walkthrough",
   "cat": "The field day",
   "title": "New-day questions must be answered fresh each day",
   "status": "done",
   "ask": "Fieldflo showed",
   "askKind": "shown",
   "source": "@27:47",
   "lands": "28",
   "note": "each day starts a new daily; the checklist starts empty",
   "needs": "",
   "link": "",
   "key": "V97",
   "mapVia": "own id",
   "status5": "completed",
   "status5Via": "canonical V97: state complete, waiting on none",
   "status5Word": "Completed",
   "canonicalId": "V97",
   "canonicalState": "complete",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "plainTitle": "New-day questions must be answered fresh each day",
   "outcome": "Completed on demo data: built, recorded finished in the task accounting of 31 October 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come.",
   "group": "area-crew",
   "groupName": "Crew (the field day)",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "id": "V98",
   "whose": "build",
   "part": "walkthrough",
   "cat": "The field day",
   "title": "Everybody on the timesheet verifies he understood the safety meeting — the whole meeting goes to his phone by text, translatable, signed on his own phone",
   "status": "part",
   "ask": "Fieldflo showed — The owner said nothing when it was demoed. What he did say about it is @36:24, that his own test link never opened (V136–V138) (raw-transcript pass, 2026-09-16)",
   "askKind": "shown",
   "source": "@27:47, @36:37",
   "lands": "38",
   "note": "he answers Yes / No in his Crew login. No text, no translation, and he sees the topic, not the whole meeting. The owner's own test texts failed on the call (@36:24)",
   "needs": "Waits on the texting number (the owner says yes, Omar buys it) and the crew's mobiles",
   "link": "ali-textnumber",
   "key": "V98",
   "mapVia": "own id",
   "status5": "needs-both",
   "status5Via": "canonical V98: state partial, waiting on Both",
   "status5Word": "Needs both",
   "canonicalId": "V98",
   "canonicalState": "partial",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "necessity": "needed-for-launch",
   "necessitySource": "plan v0.2 (materials/handoff/2026-10-31_0102_audit-v2.4/DRAFT_MAKKI_PROJECT_PLAN_2026-10-31_v0.2.md, generated 2026-10-31): card office-textline \"The labourer text line (verify by text, no login)\" on finish line 2",
   "necessityVia": "the canonical row V98's tag (tracker.json, reconciled over all 566 live rows)",
   "necessityWord": "Needed for launch",
   "plainTitle": "Everybody on the timesheet verifies he understood the safety meeting — the whole meeting…",
   "outcome": "Needs both Omar and the owner — partly built; a joint word closes it.",
   "next": "Waits on the texting number (the owner says yes, Omar buys it) and the crew's mobiles",
   "group": "area-office",
   "groupName": "Office / Admin / Helpers",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "not-live",
   "liveWord": "not on the live build"
  },
  {
   "id": "V99",
   "whose": "build",
   "part": "walkthrough",
   "cat": "The field day",
   "title": "Inspections during the day; a \"no\" or \"broken\" assigned as a corrective action, the person notified",
   "status": "part",
   "ask": "Fieldflo showed",
   "askKind": "shown",
   "source": "@27:47",
   "lands": "14, 34, A47, A48",
   "note": "2026-09-20 — a failed inspection now fires a notice naming who owns the corrective action, or saying plainly that none has been raised (scan() step 2 in portal/app-notify.js). It still does not go to that person: the audience is [\"owner\",\"lead\"] and feed() filters on role plus job scope only — The owner's name is text inside the notice, and fire()'s person field is never set or read. Raising the action off a failed item is still done by hand",
   "needs": "Nothing blocks it: the hive builds it on demo data",
   "link": "",
   "key": "V99",
   "mapVia": "own id",
   "status5": "not-done",
   "status5Via": "canonical V99: state partial, waiting on none",
   "status5Word": "Not done",
   "canonicalId": "V99",
   "canonicalState": "partial",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "necessity": "needed-for-demo",
   "necessitySource": "plan v0.2 (materials/handoff/2026-10-31_0102_audit-v2.4/DRAFT_MAKKI_PROJECT_PLAN_2026-10-31_v0.2.md, generated 2026-10-31): card safe-inc \"Incidents, inspections, corrective actions and OHS reports\" on finish line 1",
   "necessityVia": "the canonical row V99's tag (tracker.json, reconciled over all 566 live rows)",
   "necessityWord": "Needed for the demo",
   "plainTitle": "Inspections during the day; a \"no\" or \"broken\" assigned as a corrective action, the…",
   "outcome": "Not done: partly built.",
   "next": "Nothing blocks it: the hive builds it on demo data",
   "group": "area-safe",
   "groupName": "Safety · Tickets · People",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "not-live",
   "liveWord": "not on the live build"
  },
  {
   "id": "V100",
   "whose": "build",
   "part": "walkthrough",
   "cat": "The field day",
   "title": "Dailies ready-made for the industry",
   "status": "part",
   "ask": "Owner: \"I love how it's tailored to demolition and abatement.\" @33:05",
   "askKind": "liked",
   "source": "@27:47",
   "lands": "28",
   "note": "a free-text note, not a structured industry daily",
   "needs": "Waits on Owner: his containment log, waste manifest and adjuster sheet",
   "link": "ali-forms",
   "key": "V100",
   "mapVia": "own id",
   "status5": "needs-ali",
   "status5Via": "canonical V100: state partial, waiting on the owner",
   "status5Word": "Needs Ali",
   "canonicalId": "V100",
   "canonicalState": "partial",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "necessity": "needed-for-demo",
   "necessitySource": "plan v0.2 (materials/handoff/2026-10-31_0102_audit-v2.4/DRAFT_MAKKI_PROJECT_PLAN_2026-10-31_v0.2.md, generated 2026-10-31): card crew-startday \"Start Day, timesheet head start and the daily report\" on finish line 1",
   "necessityVia": "the canonical row V100's tag (tracker.json, reconciled over all 566 live rows)",
   "necessityWord": "Needed for the demo",
   "plainTitle": "Dailies ready-made for the industry",
   "outcome": "Needs Ali: partly built — it waits on the owner.",
   "next": "Waits on Owner: his containment log, waste manifest and adjuster sheet",
   "group": "area-crew",
   "groupName": "Crew (the field day)",
   "alsoAreas": [
    "Finance / QuickBooks"
   ],
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "not-live",
   "liveWord": "not on the live build"
  },
  {
   "id": "V101",
   "whose": "build",
   "part": "walkthrough",
   "cat": "The field day",
   "title": "Talk into the daily in any language — \"What'd you do today?\"",
   "status": "done",
   "ask": "Fieldflo showed — The owner said nothing (raw-transcript pass, 2026-09-16)",
   "askKind": "shown",
   "source": "@27:47",
   "lands": "28, A42, A62",
   "note": "browser speech-to-text in 6 languages on Start Day, and tools/daily.cjs turns a foreman's words into a filed daily on the text line",
   "needs": "",
   "link": "",
   "key": "V101",
   "mapVia": "own id",
   "status5": "completed",
   "status5Via": "canonical V101: state complete, waiting on none",
   "status5Word": "Completed",
   "canonicalId": "V101",
   "canonicalState": "complete",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "plainTitle": "Talk into the daily in any language — \"What'd you do today?\"",
   "outcome": "Completed on demo data: built, recorded finished in the task accounting of 31 October 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come.",
   "group": "area-crew",
   "groupName": "Crew (the field day)",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "id": "V102",
   "whose": "build",
   "part": "walkthrough",
   "cat": "The field day",
   "title": "An incident / near miss / stop work on the daily notifies the office at once",
   "status": "done",
   "ask": "Fieldflo showed",
   "askKind": "shown",
   "source": "@27:47",
   "lands": "14, 34, A46",
   "note": "2026-09-20 — an incident, a near miss or a stop-work reaches the owner's and the site lead's bell at once, marked urgent, from both the seeded register and a newly filed one (scan() step 1 in portal/app-notify.js). The bookkeeper login is not on the audience list",
   "needs": "",
   "link": "",
   "key": "V102",
   "mapVia": "own id",
   "status5": "completed",
   "status5Via": "canonical V102: state complete, waiting on none",
   "status5Word": "Completed",
   "canonicalId": "V102",
   "canonicalState": "complete",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "plainTitle": "An incident / near miss / stop work on the daily notifies the office at once",
   "outcome": "Completed on demo data: built, recorded finished in the task accounting of 31 October 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come.",
   "group": "area-safe",
   "groupName": "Safety · Tickets · People",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "id": "V103",
   "whose": "build",
   "part": "walkthrough",
   "cat": "The field day",
   "title": "Goals for tomorrow and the week, and a meeting log, on the daily",
   "status": "done",
   "ask": "Fieldflo showed",
   "askKind": "shown",
   "source": "@27:47",
   "lands": "",
   "note": "2026-09-20 — a Goals & meeting log panel on the daily: goal for tomorrow, goal for the week, and a logged meeting (time · kind · who · what was said); goalsPanel in portal/app-day.js",
   "needs": "",
   "link": "",
   "key": "V103",
   "mapVia": "own id",
   "status5": "completed",
   "status5Via": "canonical V103: state complete, waiting on none",
   "status5Word": "Completed",
   "canonicalId": "V103",
   "canonicalState": "complete",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "plainTitle": "Goals for tomorrow and the week, and a meeting log, on the daily",
   "outcome": "Completed on demo data: built, recorded finished in the task accounting of 31 October 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come.",
   "group": "area-crew",
   "groupName": "Crew (the field day)",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "id": "V104",
   "whose": "build",
   "part": "walkthrough",
   "cat": "The field day",
   "title": "\"Any more asbestos that are mold detected, any abatement procedures\" on the daily",
   "status": "open",
   "ask": "The owner flagged this himself: \"Some stuff for abatements is a little more detailed and job specific.\" @4:26",
   "askKind": "asked",
   "source": "@27:47",
   "lands": "",
   "note": "the biggest hole on the owner's own words",
   "needs": "Waits on Owner: his containment log, waste manifest and adjuster sheet",
   "link": "ali-forms",
   "key": "V104",
   "mapVia": "own id",
   "status5": "needs-ali",
   "status5Via": "canonical V104: state blocked, waiting on the owner",
   "status5Word": "Needs Ali",
   "canonicalId": "V104",
   "canonicalState": "blocked",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "necessity": "needed-for-demo",
   "necessitySource": "plan v0.2 (materials/handoff/2026-10-31_0102_audit-v2.4/DRAFT_MAKKI_PROJECT_PLAN_2026-10-31_v0.2.md, generated 2026-10-31): card crew-contain \"Containment log and abatement daily\" on finish line 1",
   "necessityVia": "the canonical row V104's tag (tracker.json, reconciled over all 566 live rows)",
   "necessityWord": "Needed for the demo",
   "plainTitle": "\"Any more asbestos that are mold detected, any abatement procedures\" on the daily",
   "outcome": "Needs Ali: not started — it waits on the owner.",
   "next": "Waits on Owner: his containment log, waste manifest and adjuster sheet",
   "group": "area-crew",
   "groupName": "Crew (the field day)",
   "alsoAreas": [
    "Finance / QuickBooks"
   ],
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "not-live",
   "liveWord": "not on the live build"
  },
  {
   "id": "V105",
   "whose": "build",
   "part": "walkthrough",
   "cat": "The field day",
   "title": "Pictures on every daily",
   "status": "done",
   "ask": "Fieldflo showed",
   "askKind": "shown",
   "source": "@27:47",
   "lands": "28, A28",
   "note": "stage, caption, straight from the phone camera",
   "needs": "",
   "link": "",
   "key": "V105",
   "mapVia": "own id",
   "status5": "completed",
   "status5Via": "canonical V105: state complete, waiting on none",
   "status5Word": "Completed",
   "canonicalId": "V105",
   "canonicalState": "complete",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "plainTitle": "Pictures on every daily",
   "outcome": "Completed on demo data: built, recorded finished in the task accounting of 31 October 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come.",
   "group": "area-crew",
   "groupName": "Crew (the field day)",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "id": "V106",
   "whose": "build",
   "part": "walkthrough",
   "cat": "The field day",
   "title": "The containment log: names already there, respirator used, task, time in, time out, signature",
   "status": "open",
   "ask": "The owner's abatement work needs it (@4:26)",
   "askKind": "asked",
   "source": "@27:47",
   "lands": "",
   "note": "needs the owner's own form",
   "needs": "Waits on Owner: his containment log, waste manifest and adjuster sheet",
   "link": "ali-forms",
   "key": "V106",
   "mapVia": "own id",
   "status5": "needs-ali",
   "status5Via": "canonical V106: state blocked, waiting on the owner",
   "status5Word": "Needs Ali",
   "canonicalId": "V106",
   "canonicalState": "blocked",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "necessity": "needed-for-demo",
   "necessitySource": "plan v0.2 (materials/handoff/2026-10-31_0102_audit-v2.4/DRAFT_MAKKI_PROJECT_PLAN_2026-10-31_v0.2.md, generated 2026-10-31): card crew-contain \"Containment log and abatement daily\" on finish line 1",
   "necessityVia": "the canonical row V106's tag (tracker.json, reconciled over all 566 live rows)",
   "necessityWord": "Needed for the demo",
   "plainTitle": "The containment log: names already there, respirator used, task, time, time out, signature",
   "outcome": "Needs Ali: not started — it waits on the owner.",
   "next": "Waits on Owner: his containment log, waste manifest and adjuster sheet",
   "group": "area-crew",
   "groupName": "Crew (the field day)",
   "alsoAreas": [
    "Finance / QuickBooks"
   ],
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "not-live",
   "liveWord": "not on the live build"
  },
  {
   "id": "V107",
   "whose": "build",
   "part": "walkthrough",
   "cat": "The field day",
   "title": "Unanswered containment fields stay red until they are filled",
   "status": "open",
   "ask": "Fieldflo showed",
   "askKind": "shown",
   "source": "@27:47",
   "lands": "",
   "note": "",
   "needs": "Waits on Owner: his containment log, waste manifest and adjuster sheet",
   "link": "ali-forms",
   "key": "V107",
   "mapVia": "own id",
   "status5": "needs-ali",
   "status5Via": "canonical V107: state blocked, waiting on the owner",
   "status5Word": "Needs Ali",
   "canonicalId": "V107",
   "canonicalState": "blocked",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "necessity": "needed-for-demo",
   "necessitySource": "plan v0.2 (materials/handoff/2026-10-31_0102_audit-v2.4/DRAFT_MAKKI_PROJECT_PLAN_2026-10-31_v0.2.md, generated 2026-10-31): card crew-contain \"Containment log and abatement daily\" on finish line 1",
   "necessityVia": "the canonical row V107's tag (tracker.json, reconciled over all 566 live rows)",
   "necessityWord": "Needed for the demo",
   "plainTitle": "Unanswered containment fields stay red until they are filled",
   "outcome": "Needs Ali: not started — it waits on the owner.",
   "next": "Waits on Owner: his containment log, waste manifest and adjuster sheet",
   "group": "area-crew",
   "groupName": "Crew (the field day)",
   "alsoAreas": [
    "Finance / QuickBooks"
   ],
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "not-live",
   "liveWord": "not on the live build"
  },
  {
   "id": "V108",
   "whose": "build",
   "part": "walkthrough",
   "cat": "The field day",
   "title": "End of day: back into the timesheet — who is leaving, what breaks they took",
   "status": "done",
   "ask": "Fieldflo showed",
   "askKind": "shown",
   "source": "@27:47",
   "lands": "28, 38",
   "note": "2026-09-20 — an End of day table on Start Day: on site / left / break per man, worked hours computed to the quarter hour with the break taken off, a \"differs\" flag against the sheet, and one button that writes the clock's hours back into the timesheet; eodPanel in portal/app-day.js",
   "needs": "",
   "link": "",
   "key": "V108",
   "mapVia": "own id",
   "status5": "completed",
   "status5Via": "canonical V108: state complete, waiting on none",
   "status5Word": "Completed",
   "canonicalId": "V108",
   "canonicalState": "complete",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "plainTitle": "End of day: back into the timesheet — who is leaving, what breaks they took",
   "outcome": "Completed on demo data: built, recorded finished in the task accounting of 31 October 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come.",
   "group": "area-crew",
   "groupName": "Crew (the field day)",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "id": "V109",
   "whose": "build",
   "part": "walkthrough",
   "cat": "The field day",
   "title": "Everyone verifies by text at the end of the day: time correct, meals, injured, \"everything looks good\"",
   "status": "part",
   "ask": "Fieldflo showed",
   "askKind": "shown",
   "source": "@27:47, @9:40",
   "lands": "38, A43, A45",
   "note": "he confirms hours and the safety talk in-app and can dispute his hours; no text, no meals question, no injury question",
   "needs": "Waits on the texting number (the owner says yes, Omar buys it) and the crew's mobiles",
   "link": "ali-textnumber",
   "key": "V109",
   "mapVia": "own id",
   "status5": "needs-both",
   "status5Via": "canonical V109: state partial, waiting on Both",
   "status5Word": "Needs both",
   "canonicalId": "V109",
   "canonicalState": "partial",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "necessity": "needed-for-launch",
   "necessitySource": "plan v0.2 (materials/handoff/2026-10-31_0102_audit-v2.4/DRAFT_MAKKI_PROJECT_PLAN_2026-10-31_v0.2.md, generated 2026-10-31): card office-textline \"The labourer text line (verify by text, no login)\" on finish line 2",
   "necessityVia": "the canonical row V109's tag (tracker.json, reconciled over all 566 live rows)",
   "necessityWord": "Needed for launch",
   "plainTitle": "Everyone verifies by text at the end of the day: time correct, meals, injured…",
   "outcome": "Needs both Omar and the owner — partly built; a joint word closes it.",
   "next": "Waits on the texting number (the owner says yes, Omar buys it) and the crew's mobiles",
   "group": "area-office",
   "groupName": "Office / Admin / Helpers",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "not-live",
   "liveWord": "not on the live build"
  },
  {
   "id": "V110",
   "whose": "build",
   "part": "walkthrough",
   "cat": "Estimating",
   "title": "A takeoff and estimating system built for the abatement world",
   "status": "open",
   "ask": "The owner pushed back: \"I know our estimators aren't fans.\" @34:36",
   "askKind": "pushed",
   "source": "@33:12",
   "lands": "",
   "note": "",
   "needs": "Waits on Owner: a handful of past quotes",
   "link": "ali-quotes",
   "key": "V110",
   "mapVia": "own id",
   "status5": "needs-ali",
   "status5Via": "canonical V110: state blocked, waiting on the owner",
   "status5Word": "Needs Ali",
   "canonicalId": "V110",
   "canonicalState": "blocked",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "necessity": "needed-for-demo",
   "necessitySource": "plan v0.2 (materials/handoff/2026-10-31_0102_audit-v2.4/DRAFT_MAKKI_PROJECT_PLAN_2026-10-31_v0.2.md, generated 2026-10-31): card sales-est \"Estimating knowledge, reviewed AI estimates and the Estimator seat\" on finish line 1",
   "necessityVia": "the canonical row V110's tag (tracker.json, reconciled over all 566 live rows)",
   "necessityWord": "Needed for the demo",
   "plainTitle": "A takeoff and estimating system built for the abatement world",
   "outcome": "Needs Ali: not started — it waits on the owner.",
   "next": "Waits on Owner: a handful of past quotes",
   "group": "area-sales",
   "groupName": "Sales / Estimating",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "not-live",
   "liveWord": "not on the live build"
  },
  {
   "id": "V111",
   "whose": "build",
   "part": "walkthrough",
   "cat": "Estimating",
   "title": "Pick the work type — demolition or abatement; residential, commercial or industrial",
   "status": "part",
   "ask": "The owner pushed back",
   "askKind": "pushed",
   "source": "@34:47",
   "lands": "4, 25 (work type is a field on a proposal)",
   "note": "work type exists as a label; it drives nothing",
   "needs": "Nothing blocks it: the hive builds it on demo data",
   "link": "",
   "key": "V111",
   "mapVia": "own id",
   "status5": "not-done",
   "status5Via": "canonical V111: state partial, waiting on none",
   "status5Word": "Not done",
   "canonicalId": "V111",
   "canonicalState": "partial",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "necessity": "needed-for-demo",
   "necessitySource": "plan v0.2 (materials/handoff/2026-10-31_0102_audit-v2.4/DRAFT_MAKKI_PROJECT_PLAN_2026-10-31_v0.2.md, generated 2026-10-31): card sales-quotes \"Quotes, pipeline, proposals and bid items\" on finish line 1",
   "necessityVia": "the canonical row V111's tag (tracker.json, reconciled over all 566 live rows)",
   "necessityWord": "Needed for the demo",
   "plainTitle": "Pick the work type — demolition or abatement; residential, commercial or industrial",
   "outcome": "Not done: partly built.",
   "next": "Nothing blocks it: the hive builds it on demo data",
   "group": "area-sales",
   "groupName": "Sales / Estimating",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "not-live",
   "liveWord": "not on the live build"
  },
  {
   "id": "V112",
   "whose": "build",
   "part": "walkthrough",
   "cat": "Estimating",
   "title": "Bring in the drawings and \"Fieldflo will start cooking for you\"",
   "status": "open",
   "ask": "The owner pushed back",
   "askKind": "pushed",
   "source": "@34:47",
   "lands": "",
   "note": "",
   "needs": "Waits on Owner: a handful of past quotes",
   "link": "ali-quotes",
   "key": "V112",
   "mapVia": "own id",
   "status5": "needs-ali",
   "status5Via": "canonical V112: state blocked, waiting on the owner",
   "status5Word": "Needs Ali",
   "canonicalId": "V112",
   "canonicalState": "blocked",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "necessity": "needed-for-demo",
   "necessitySource": "plan v0.2 (materials/handoff/2026-10-31_0102_audit-v2.4/DRAFT_MAKKI_PROJECT_PLAN_2026-10-31_v0.2.md, generated 2026-10-31): card sales-est \"Estimating knowledge, reviewed AI estimates and the Estimator seat\" on finish line 1",
   "necessityVia": "the canonical row V112's tag (tracker.json, reconciled over all 566 live rows)",
   "necessityWord": "Needed for the demo",
   "plainTitle": "Bring in the drawings and \"Fieldflo will start cooking for you\"",
   "outcome": "Needs Ali: not started — it waits on the owner.",
   "next": "Waits on Owner: a handful of past quotes",
   "group": "area-sales",
   "groupName": "Sales / Estimating",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "not-live",
   "liveWord": "not on the live build"
  },
  {
   "id": "V113",
   "whose": "build",
   "part": "walkthrough",
   "cat": "Estimating",
   "title": "The output drops automatically into the proposal with bid items and tasks, sent to the client",
   "status": "open",
   "ask": "The owner pushed back",
   "askKind": "pushed",
   "source": "@34:47",
   "lands": "4, 25",
   "note": "our proposal carries one price, no bid items, and is not sent",
   "needs": "Waits on Owner: a handful of past quotes",
   "link": "ali-quotes",
   "key": "V113",
   "mapVia": "own id",
   "status5": "needs-ali",
   "status5Via": "canonical V113: state blocked, waiting on the owner",
   "status5Word": "Needs Ali",
   "canonicalId": "V113",
   "canonicalState": "blocked",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "necessity": "needed-for-demo",
   "necessitySource": "plan v0.2 (materials/handoff/2026-10-31_0102_audit-v2.4/DRAFT_MAKKI_PROJECT_PLAN_2026-10-31_v0.2.md, generated 2026-10-31): card sales-est \"Estimating knowledge, reviewed AI estimates and the Estimator seat\" on finish line 1",
   "necessityVia": "the canonical row V113's tag (tracker.json, reconciled over all 566 live rows)",
   "necessityWord": "Needed for the demo",
   "plainTitle": "The output drops automatically into the proposal with bid items and tasks, sent to the…",
   "outcome": "Needs Ali: not started — it waits on the owner.",
   "next": "Waits on Owner: a handful of past quotes",
   "group": "area-sales",
   "groupName": "Sales / Estimating",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "not-live",
   "liveWord": "not on the live build"
  },
  {
   "id": "V114",
   "whose": "build",
   "part": "walkthrough",
   "cat": "Scheduling",
   "title": "A dispatching system that sends each employee his own schedule",
   "status": "part",
   "ask": "Fieldflo showed",
   "askKind": "shown",
   "source": "@34:47",
   "lands": "39, A38",
   "note": "in his login, not sent",
   "needs": "Waits on the texting number (the owner says yes, Omar buys it) and the crew's mobiles",
   "link": "ali-textnumber",
   "key": "V114",
   "mapVia": "own id",
   "status5": "needs-both",
   "status5Via": "canonical V114: state partial, waiting on Both",
   "status5Word": "Needs both",
   "canonicalId": "V114",
   "canonicalState": "partial",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "necessity": "needed-for-launch",
   "necessitySource": "plan v0.2 (materials/handoff/2026-10-31_0102_audit-v2.4/DRAFT_MAKKI_PROJECT_PLAN_2026-10-31_v0.2.md, generated 2026-10-31): card office-msg \"Notifications, broadcasts and auto-send\" on finish line 2",
   "necessityVia": "the canonical row V114's tag (tracker.json, reconciled over all 566 live rows)",
   "necessityWord": "Needed for launch",
   "plainTitle": "A dispatching system that sends each employee his own schedule",
   "outcome": "Needs both Omar and the owner — partly built; a joint word closes it.",
   "next": "Waits on the texting number (the owner says yes, Omar buys it) and the crew's mobiles",
   "group": "area-office",
   "groupName": "Office / Admin / Helpers",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "not-live",
   "liveWord": "not on the live build"
  },
  {
   "id": "V115",
   "whose": "build",
   "part": "walkthrough",
   "cat": "Scheduling",
   "title": "The projects in the chosen time frame are listed; pick the ones you want to schedule",
   "status": "done",
   "ask": "Fieldflo showed",
   "askKind": "shown",
   "source": "@34:47",
   "lands": "7, 31, A34, A35",
   "note": "a board of crews × days, click or drag",
   "needs": "",
   "link": "",
   "key": "V115",
   "mapVia": "own id",
   "status5": "completed",
   "status5Via": "canonical V115: state complete, waiting on none",
   "status5Word": "Completed",
   "canonicalId": "V115",
   "canonicalState": "complete",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "plainTitle": "The projects in the chosen time frame are listed; pick the ones you want to schedule",
   "outcome": "Completed on demo data: built, recorded finished in the task accounting of 31 October 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come.",
   "group": "area-mgmt",
   "groupName": "Management (owner · PM · lead)",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "id": "V116",
   "whose": "build",
   "part": "walkthrough",
   "cat": "Scheduling",
   "title": "Each employee gets his assignments on his cell phone",
   "status": "part",
   "ask": "Fieldflo showed",
   "askKind": "shown",
   "source": "@36:37",
   "lands": "39",
   "note": "in-app; the text version is not built",
   "needs": "Waits on the texting number (the owner says yes, Omar buys it) and the crew's mobiles",
   "link": "ali-textnumber",
   "key": "V116",
   "mapVia": "own id",
   "status5": "needs-both",
   "status5Via": "canonical V116: state partial, waiting on Both",
   "status5Word": "Needs both",
   "canonicalId": "V116",
   "canonicalState": "partial",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "necessity": "needed-for-launch",
   "necessitySource": "plan v0.2 (materials/handoff/2026-10-31_0102_audit-v2.4/DRAFT_MAKKI_PROJECT_PLAN_2026-10-31_v0.2.md, generated 2026-10-31): card office-msg \"Notifications, broadcasts and auto-send\" on finish line 2",
   "necessityVia": "the canonical row V116's tag (tracker.json, reconciled over all 566 live rows)",
   "necessityWord": "Needed for launch",
   "plainTitle": "Each employee gets his assignments on his cell phone",
   "outcome": "Needs both Omar and the owner — partly built; a joint word closes it.",
   "next": "Waits on the texting number (the owner says yes, Omar buys it) and the crew's mobiles",
   "group": "area-office",
   "groupName": "Office / Admin / Helpers",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "not-live",
   "liveWord": "not on the live build"
  },
  {
   "id": "V117",
   "whose": "build",
   "part": "walkthrough",
   "cat": "Scheduling",
   "title": "A Gantt chart of everything coming up, to see people coming off a project and where more work is needed",
   "status": "part",
   "ask": "Fieldflo showed",
   "askKind": "shown",
   "source": "@36:37",
   "lands": "8, 32",
   "note": "the timeline is built and read-only; it shows jobs by crew and a Today line, but it does not surface where more work is needed",
   "needs": "Nothing blocks it: the hive builds it on demo data",
   "link": "",
   "key": "V117",
   "mapVia": "own id",
   "status5": "not-done",
   "status5Via": "canonical V117: state partial, waiting on none",
   "status5Word": "Not done",
   "canonicalId": "V117",
   "canonicalState": "partial",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "necessity": "needed-for-demo",
   "necessitySource": "plan v0.2 (materials/handoff/2026-10-31_0102_audit-v2.4/DRAFT_MAKKI_PROJECT_PLAN_2026-10-31_v0.2.md, generated 2026-10-31): card mgmt-sched \"Schedule board, Timeline and the 4-week look-ahead\" on finish line 1",
   "necessityVia": "the canonical row V117's tag (tracker.json, reconciled over all 566 live rows)",
   "necessityWord": "Needed for the demo",
   "plainTitle": "A Gantt chart of everything coming up, to see people coming off a project and where more…",
   "outcome": "Not done: partly built.",
   "next": "Nothing blocks it: the hive builds it on demo data",
   "group": "area-mgmt",
   "groupName": "Management (owner · PM · lead)",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "not-live",
   "liveWord": "not on the live build"
  },
  {
   "id": "V118",
   "whose": "build",
   "part": "walkthrough",
   "cat": "Closeout & payroll",
   "title": "A closeout report of everything done on the project",
   "status": "done",
   "ask": "Fieldflo showed — The owner said nothing (raw-transcript pass, 2026-09-16)",
   "askKind": "shown",
   "source": "@36:37",
   "lands": "A31, A32",
   "note": "2026-09-20 — see V81: the closeout report gained the dailies and the crew's tickets (portal/app-job.js)",
   "needs": "",
   "link": "",
   "key": "V118",
   "mapVia": "own id",
   "status5": "completed",
   "status5Via": "canonical V118: state complete, waiting on none",
   "status5Word": "Completed",
   "canonicalId": "V118",
   "canonicalState": "complete",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "plainTitle": "A closeout report of everything done on the project",
   "outcome": "Completed on demo data: built, recorded finished in the task accounting of 31 October 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come.",
   "group": "area-mgmt",
   "groupName": "Management (owner · PM · lead)",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "id": "V119",
   "whose": "build",
   "part": "walkthrough",
   "cat": "Closeout & payroll",
   "title": "Weekly payroll approval: everybody's total time, then per employee, per project, per cost code",
   "status": "done",
   "ask": "The owner's own access question was about payroll @8:14",
   "askKind": "asked",
   "source": "@36:37",
   "lands": "10, 21",
   "note": "2026-09-20 — Approve the week by cost code on Payroll Approval: men, jobs, hours and an Approve per code plus \"approve the rest\"; codePanel → R.payrollByCode in portal/app-day.js. The bookkeeper gets the same table with hours and no dollar and no buttons",
   "needs": "",
   "link": "",
   "key": "V119",
   "mapVia": "own id",
   "status5": "completed",
   "status5Via": "canonical V119: state complete, waiting on none",
   "status5Word": "Completed",
   "canonicalId": "V119",
   "canonicalState": "complete",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "plainTitle": "Weekly payroll approval: everybody's total time, then per employee, per project, per…",
   "outcome": "Completed on demo data: built, recorded finished in the task accounting of 31 October 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come.",
   "group": "area-fin",
   "groupName": "Finance / QuickBooks",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "id": "V120",
   "whose": "build",
   "part": "walkthrough",
   "cat": "Closeout & payroll",
   "title": "Make fixes inside payroll approval",
   "status": "done",
   "ask": "Fieldflo showed",
   "askKind": "shown",
   "source": "@36:37",
   "lands": "28",
   "note": "2026-09-20 — Fix the week here, an editable man × day grid inside Payroll Approval (owner only): every change asks why, is logged with who and when, can be undone, and flows back through to Start Day and the dashboard; a missed man can be added. fixPanel in portal/app-day.js",
   "needs": "",
   "link": "",
   "key": "V120",
   "mapVia": "own id",
   "status5": "completed",
   "status5Via": "canonical V120: state complete, waiting on none",
   "status5Word": "Completed",
   "canonicalId": "V120",
   "canonicalState": "complete",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "plainTitle": "Make fixes inside payroll approval",
   "outcome": "Completed on demo data: built, recorded finished in the task accounting of 31 October 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come.",
   "group": "area-fin",
   "groupName": "Finance / QuickBooks",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "id": "V121",
   "whose": "build",
   "part": "walkthrough",
   "cat": "Closeout & payroll",
   "title": "Dan: \"A nice spreadsheet right for your in-house accountant\" — \"in-house\" is Dan's word, not the owner's. Owner: \"We do have an accountant doing payroll.\" @8:14. Omar confirmed 2026-09-16: outside firm.",
   "status": "done",
   "ask": "The owner asked: give the accountant access to just payroll @8:14",
   "askKind": "asked",
   "source": "@36:37",
   "lands": "10, 21, A50",
   "note": "Export CSV, and the bookkeeper's copy carries hours with no rate and no dollar",
   "needs": "",
   "link": "",
   "key": "V121",
   "mapVia": "own id",
   "status5": "completed",
   "status5Via": "canonical V121: state complete, waiting on none",
   "status5Word": "Completed",
   "canonicalId": "V121",
   "canonicalState": "complete",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "plainTitle": "Dan: \"A nice spreadsheet right for your in-house accountant\" — \"in-house\" is Dan's word…",
   "outcome": "Completed on demo data: built, recorded finished in the task accounting of 31 October 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come.",
   "group": "area-fin",
   "groupName": "Finance / QuickBooks",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "id": "V122",
   "whose": "build",
   "part": "walkthrough",
   "cat": "Closeout & payroll",
   "title": "An approval chain: named PMs approve their own projects, with a trailing history; the payroll administrator cannot run it until they have all signed",
   "status": "part",
   "ask": "Fieldflo showed",
   "askKind": "shown",
   "source": "@36:37",
   "lands": "10",
   "note": "one approver, recorded with name and time; no chain, no trail, nothing is blocked",
   "needs": "Waits on the owner's decision: who else signs payroll?",
   "link": "ali-approvers",
   "key": "V122",
   "mapVia": "own id",
   "status5": "needs-ali",
   "status5Via": "canonical V122: state partial, waiting on the owner",
   "status5Word": "Needs Ali",
   "canonicalId": "V122",
   "canonicalState": "partial",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "necessity": "needed-for-demo",
   "necessitySource": "plan v0.2 (materials/handoff/2026-10-31_0102_audit-v2.4/DRAFT_MAKKI_PROJECT_PLAN_2026-10-31_v0.2.md, generated 2026-10-31): card fin-payroll \"Payroll approval, allocation to jobs and export\" on finish line 1",
   "necessityVia": "the canonical row V122's tag (tracker.json, reconciled over all 566 live rows)",
   "necessityWord": "Needed for the demo",
   "plainTitle": "An approval chain: named PMs approve their own projects, with a trailing history; the…",
   "outcome": "Needs Ali: partly built — it waits on the owner.",
   "next": "Waits on the owner's decision: who else signs payroll?",
   "group": "area-fin",
   "groupName": "Finance / QuickBooks",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "not-live",
   "liveWord": "not on the live build"
  },
  {
   "id": "V124",
   "whose": "build",
   "part": "walkthrough",
   "cat": "Price & next steps",
   "title": "A demo or trial login to click through before signing",
   "status": "done",
   "ask": "The owner asked, and was told no",
   "askKind": "asked",
   "source": "The owner asked @41:06; Dan refused @41:24",
   "lands": "1 and all 42",
   "note": "The owner's own portal is live for him today, on demo data. This is the one thing Fieldflo refused him",
   "needs": "",
   "link": "",
   "key": "V124",
   "mapVia": "own id",
   "status5": "completed",
   "status5Via": "canonical V124: state complete, waiting on none",
   "status5Word": "Completed",
   "canonicalId": "V124",
   "canonicalState": "complete",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "plainTitle": "A demo or trial login to click through before signing",
   "outcome": "Completed on demo data: built, recorded finished in the task accounting of 31 October 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come.",
   "group": "area-pres",
   "groupName": "Presentation (finish line 1)",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "id": "V125",
   "whose": "build",
   "part": "walkthrough",
   "cat": "The owner's own asks",
   "title": "A program his workers and managers find easy to use on site — the last ones were \"hard for our workers and our managers to use\"",
   "status": "part",
   "ask": "The owner asked — his reason for taking the call",
   "askKind": "asked",
   "source": "@2:01",
   "lands": "all 42",
   "note": "five purpose-built logins, a phone layout, big buttons; never tested by a Makki crew",
   "needs": "Nothing blocks it: the hive builds it on demo data",
   "link": "",
   "key": "V125",
   "mapVia": "own id",
   "status5": "not-done",
   "status5Via": "canonical V125: state partial, waiting on none",
   "status5Word": "Not done",
   "canonicalId": "V125",
   "canonicalState": "partial",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "necessity": "needed-for-demo",
   "necessitySource": "plan v0.2 (materials/handoff/2026-10-31_0102_audit-v2.4/DRAFT_MAKKI_PROJECT_PLAN_2026-10-31_v0.2.md, generated 2026-10-31): card mgmt-ux \"Navigation and everyday usability\" on finish line 1",
   "necessityVia": "the canonical row V125's tag (tracker.json, reconciled over all 566 live rows)",
   "necessityWord": "Needed for the demo",
   "plainTitle": "A program his workers and managers find easy to use on site — the last ones were \"hard…",
   "outcome": "Not done: partly built.",
   "next": "Nothing blocks it: the hive builds it on demo data",
   "group": "area-mgmt",
   "groupName": "Management (owner · PM · lead)",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "not-live",
   "liveWord": "not on the live build"
  },
  {
   "id": "V126",
   "whose": "build",
   "part": "walkthrough",
   "cat": "The owner's own asks",
   "title": "One system everybody actually uses — today \"some people were using it, some people weren't, everything was out of whack\"",
   "status": "part",
   "ask": "The owner asked",
   "askKind": "asked",
   "source": "@2:01",
   "lands": "12 and the gating behind all 42",
   "note": "one login per person, each seeing only their own slice; nothing forces use",
   "needs": "Nothing blocks it: the hive builds it on demo data",
   "link": "",
   "key": "V126",
   "mapVia": "own id",
   "status5": "not-done",
   "status5Via": "canonical V126: state partial, waiting on none",
   "status5Word": "Not done",
   "canonicalId": "V126",
   "canonicalState": "partial",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "necessity": "needed-for-demo",
   "necessitySource": "plan v0.2 (materials/handoff/2026-10-31_0102_audit-v2.4/DRAFT_MAKKI_PROJECT_PLAN_2026-10-31_v0.2.md, generated 2026-10-31): card mgmt-ux \"Navigation and everyday usability\" on finish line 1",
   "necessityVia": "the canonical row V126's tag (tracker.json, reconciled over all 566 live rows)",
   "necessityWord": "Needed for the demo",
   "plainTitle": "One system everybody actually uses — today \"some people were using it, some people…",
   "outcome": "Not done: partly built.",
   "next": "Nothing blocks it: the hive builds it on demo data",
   "group": "area-mgmt",
   "groupName": "Management (owner · PM · lead)",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "not-live",
   "liveWord": "not on the live build"
  },
  {
   "id": "V127",
   "whose": "build",
   "part": "walkthrough",
   "cat": "The owner's own asks",
   "title": "Roll it out across five companies",
   "status": "out",
   "ask": "The owner asked",
   "askKind": "asked",
   "source": "@2:01",
   "lands": "",
   "note": "Omar closed it 2026-09-15: Makki Demolition only",
   "needs": "",
   "link": "",
   "key": "V127",
   "status5": "declined",
   "status5Via": "closed by a dated decline — Omar closed the five-companies roll-out on 15 September 2026 — Makki Demolition only — so the row is a closed scope and not work waiting to be done. Source: profile/Master_List_2026-09-16.md (V127): \"Omar closed it 2026-09-15: Makki Demolition only\", read 2026-11-08; the row's own master-list status is out.",
   "status5Word": "Declined",
   "canonicalId": null,
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "necessity": "dropped",
   "necessityReason": "closed by a dated decline: Omar closed the five-companies roll-out on 15 September 2026 — Makki Demolition only — so the row is a closed scope and not work waiting to be done.",
   "necessitySource": "profile/Master_List_2026-09-16.md (V127): \"Omar closed it 2026-09-15: Makki Demolition only\", read 2026-11-08; the row's own master-list status is out.",
   "necessityWord": "Dropped",
   "status5Before": "not-done",
   "declinedScope": {
    "why": "Omar closed the five-companies roll-out on 15 September 2026 — Makki Demolition only — so the row is a closed scope and not work waiting to be done.",
    "source": "profile/Master_List_2026-09-16.md (V127): \"Omar closed it 2026-09-15: Makki Demolition only\", read 2026-11-08; the row's own master-list status is out."
   },
   "necessityBefore": "dropped",
   "plainTitle": "Roll it out across five companies",
   "outcome": "Declined: dropped on purpose, not counted — Omar closed it on 15 September 2026.",
   "next": "Nothing: closed on 15 September 2026; it stays listed for the record and is not counted.",
   "group": "cat-ali-s-own-asks",
   "groupName": "The owner's own asks",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "not-live",
   "liveWord": "not on the live build"
  },
  {
   "id": "V128",
   "whose": "build",
   "part": "walkthrough",
   "cat": "The owner's own asks",
   "title": "Connect to QuickBooks. Online.",
   "status": "open",
   "ask": "The owner asked — unprompted, cutting into the CRM pitch",
   "askKind": "asked",
   "source": "@8:00, @8:09",
   "lands": "11",
   "note": "the settings page exists, the link does not",
   "needs": "Waits on Owner: fifteen minutes on QuickBooks Online",
   "link": "ali-quickbooks",
   "key": "V128",
   "mapVia": "own id",
   "status5": "needs-ali",
   "status5Via": "canonical V128: state blocked, waiting on the owner",
   "status5Word": "Needs Ali",
   "canonicalId": "V128",
   "canonicalState": "blocked",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "necessity": "needed-for-launch",
   "necessitySource": "plan v0.2 (materials/handoff/2026-10-31_0102_audit-v2.4/DRAFT_MAKKI_PROJECT_PLAN_2026-10-31_v0.2.md, generated 2026-10-31): card fin-qbo \"QuickBooks Online connection, first import and The Books\" on finish line 2",
   "necessityVia": "the canonical row V128's tag (tracker.json, reconciled over all 566 live rows)",
   "necessityWord": "Needed for launch",
   "plainTitle": "Connect to QuickBooks. Online.",
   "outcome": "Needs Ali: not started — it waits on the owner.",
   "next": "Waits on Owner: fifteen minutes on QuickBooks Online",
   "group": "area-fin",
   "groupName": "Finance / QuickBooks",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "not-live",
   "liveWord": "not on the live build"
  },
  {
   "id": "V129",
   "whose": "build",
   "part": "walkthrough",
   "cat": "The owner's own asks",
   "title": "Let the accountant see payroll and nothing else",
   "status": "done",
   "ask": "The owner asked — his only unprompted access question",
   "askKind": "asked",
   "source": "@8:14",
   "lands": "12, 21",
   "note": "and gated at the field level: her Payroll page has hours and no rate. The tab ships off; the owner switches it on",
   "needs": "",
   "link": "",
   "key": "V129",
   "mapVia": "alias, same title",
   "mapEvidence": "V05·codex lists V129 as its alias under this row's own title — canonical accounting v2.4 (materials/canonical/2026-10-31_canonical-tasks.v2.4.json, generated 2026-10-31)",
   "status5": "completed",
   "status5Via": "canonical V05·codex: state complete, waiting on none",
   "status5Word": "Completed",
   "canonicalId": "V05·codex",
   "canonicalState": "complete",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "recorded accepted in the canonical accounting, no ruling line carries the id",
   "plainTitle": "Let the accountant see payroll and nothing else",
   "outcome": "Completed on demo data: built, recorded finished in the task accounting of 31 October 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come.",
   "group": "area-fin",
   "groupName": "Finance / QuickBooks",
   "alsoAreas": [
    "Management (owner · PM · lead)",
    "Platform / Hosting / Launch"
   ],
   "canonAliases": [
    "P21"
   ],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "id": "V131",
   "whose": "build",
   "part": "walkthrough",
   "cat": "The owner's own asks",
   "title": "Job-specific abatement forms — \"some stuff for abatements is a little more detailed and job specific\"",
   "status": "open",
   "ask": "The owner asked",
   "askKind": "asked",
   "source": "@4:26",
   "lands": "",
   "note": "this is V104, V106 and V107 in one line, and it is his own words",
   "needs": "Waits on Owner: his containment log, waste manifest and adjuster sheet",
   "link": "ali-forms",
   "key": "V131",
   "mapVia": "own id",
   "status5": "needs-ali",
   "status5Via": "canonical V131: state blocked, waiting on the owner",
   "status5Word": "Needs Ali",
   "canonicalId": "V131",
   "canonicalState": "blocked",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "necessity": "needed-for-demo",
   "necessitySource": "plan v0.2 (materials/handoff/2026-10-31_0102_audit-v2.4/DRAFT_MAKKI_PROJECT_PLAN_2026-10-31_v0.2.md, generated 2026-10-31): card crew-contain \"Containment log and abatement daily\" on finish line 1",
   "necessityVia": "the canonical row V131's tag (tracker.json, reconciled over all 566 live rows)",
   "necessityWord": "Needed for the demo",
   "plainTitle": "Job-specific abatement forms — \"some stuff for abatements is a little more detailed and…",
   "outcome": "Needs Ali: not started — it waits on the owner.",
   "next": "Waits on Owner: his containment log, waste manifest and adjuster sheet",
   "group": "area-crew",
   "groupName": "Crew (the field day)",
   "alsoAreas": [
    "Finance / QuickBooks"
   ],
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "not-live",
   "liveWord": "not on the live build"
  },
  {
   "id": "V132",
   "whose": "build",
   "part": "walkthrough",
   "cat": "The owner's own asks",
   "title": "What his crews actually fill out: a timesheet, a safety meeting, some dailies (@4:26) — and, agreed again, a timesheet, a JHA, an inspection, and a daily (@25:39)",
   "status": "part",
   "ask": "The owner confirmed twice",
   "askKind": "asked",
   "source": "@4:26, @25:39",
   "lands": "28, 14, 34",
   "note": "timesheet, safety talk and daily notes are inside Start Day; the inspection is on a separate page",
   "needs": "The remainder: the inspection form beside the timesheet, the safety talk and the daily notes already inside Start Day.",
   "link": "",
   "needsBefore": "Nothing blocks it: the hive builds it on demo data",
   "key": "V132",
   "mapVia": "own id",
   "status5": "not-done",
   "status5Via": "canonical V132: state partial, waiting on none",
   "status5Word": "Not done",
   "canonicalId": "V132",
   "canonicalState": "partial",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "necessity": "needed-for-demo",
   "necessitySource": "plan v0.2 (materials/handoff/2026-10-31_0102_audit-v2.4/DRAFT_MAKKI_PROJECT_PLAN_2026-10-31_v0.2.md, generated 2026-10-31): card crew-startday \"Start Day, timesheet head start and the daily report\" on finish line 1",
   "necessityVia": "the canonical row V132's tag (tracker.json, reconciled over all 566 live rows)",
   "necessityWord": "Needed for the demo",
   "plainTitle": "What his crews actually fill out: a timesheet, a safety meeting, some dailies —, agreed…",
   "outcome": "Not done: partly built.",
   "next": "The remainder: the inspection form beside the timesheet, the safety talk and the daily notes already inside Start Day.",
   "group": "area-crew",
   "groupName": "Crew (the field day)",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "not-live",
   "liveWord": "not on the live build"
  },
  {
   "id": "V133",
   "whose": "build",
   "part": "walkthrough",
   "cat": "The owner's own asks",
   "title": "80 employees doing \"meetings and time\" in it",
   "status": "part",
   "ask": "The owner said it",
   "askKind": "asked",
   "source": "@40:00",
   "lands": "37–40",
   "note": "the crew login does exactly meetings and time; 80 men each needing a login is the thing V4 was meant to avoid",
   "needs": "Nothing blocks it: the hive builds it on demo data",
   "link": "",
   "key": "V133",
   "mapVia": "own id",
   "status5": "not-done",
   "status5Via": "canonical V133: state partial, waiting on none",
   "status5Word": "Not done",
   "canonicalId": "V133",
   "canonicalState": "partial",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "necessity": "needed-for-demo",
   "necessitySource": "plan v0.2 (materials/handoff/2026-10-31_0102_audit-v2.4/DRAFT_MAKKI_PROJECT_PLAN_2026-10-31_v0.2.md, generated 2026-10-31): card mgmt-ux \"Navigation and everyday usability\" on finish line 1",
   "necessityVia": "the canonical row V133's tag (tracker.json, reconciled over all 566 live rows)",
   "necessityWord": "Needed for the demo",
   "plainTitle": "80 employees doing \"meetings and time\" in it",
   "outcome": "Not done: partly built.",
   "next": "Nothing blocks it: the hive builds it on demo data",
   "group": "area-mgmt",
   "groupName": "Management (owner · PM · lead)",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "not-live",
   "liveWord": "not on the live build"
  },
  {
   "id": "V136",
   "whose": "build",
   "part": "walkthrough",
   "cat": "The owner's own asks",
   "title": "A link we text a man must open in the phone's plain browser — no app to install. The owner tapped Fieldflo's texts live on the call: \"I have, but when I'm clicking on them, they're not going anywhere because it I'm not connected to the... Fieldflo app\"",
   "status": "open",
   "ask": "The owner said it — the only thing he tested with his own hands, and it failed in front of him",
   "askKind": "asked",
   "source": "@35:48 (raw L375)",
   "lands": "",
   "note": "a design constraint on the labourer-by-text plan, not a screen. Fieldflo's own demo broke on exactly this",
   "needs": "Waits on the texting number (the owner says yes, Omar buys it) and the crew's mobiles",
   "link": "ali-textnumber",
   "key": "V136",
   "mapVia": "own id",
   "status5": "needs-both",
   "status5Via": "canonical V136: state blocked, waiting on Both",
   "status5Word": "Needs both",
   "canonicalId": "V136",
   "canonicalState": "blocked",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "necessity": "needed-for-launch",
   "necessitySource": "plan v0.2 (materials/handoff/2026-10-31_0102_audit-v2.4/DRAFT_MAKKI_PROJECT_PLAN_2026-10-31_v0.2.md, generated 2026-10-31): card office-textline \"The labourer text line (verify by text, no login)\" on finish line 2",
   "necessityVia": "the canonical row V136's tag (tracker.json, reconciled over all 566 live rows)",
   "necessityWord": "Needed for launch",
   "plainTitle": "A link we text a man must open in the phone's plain browser — no app to install. The…",
   "outcome": "Needs both Omar and the owner — not started; a joint word closes it.",
   "next": "Waits on the texting number (the owner says yes, Omar buys it) and the crew's mobiles",
   "group": "area-office",
   "groupName": "Office / Admin / Helpers",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "not-live",
   "liveWord": "not on the live build"
  },
  {
   "id": "V137",
   "whose": "build",
   "part": "walkthrough",
   "cat": "The owner's own asks",
   "title": "That same link must open with no account and no login — \"kept saying that I'm not connected to the app\"",
   "status": "open",
   "ask": "The owner said it",
   "askKind": "asked",
   "source": "@36:24 (raw L393)",
   "lands": "",
   "note": "needs a page that renders with no session; our labourer has a login today (V4)",
   "needs": "The link page is built and opens with no login on demo data; the live send to a man's mobile stays held until the number is bought.",
   "link": "ali-textnumber",
   "needsBefore": "Waits on the texting number (the owner says yes, Omar buys it) and the crew's mobiles",
   "key": "V137",
   "mapVia": "own id",
   "status5": "needs-both",
   "status5Via": "canonical V137: state blocked, waiting on Both",
   "status5Word": "Needs both",
   "canonicalId": "V137",
   "canonicalState": "blocked",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "necessity": "needed-for-launch",
   "necessitySource": "plan v0.2 (materials/handoff/2026-10-31_0102_audit-v2.4/DRAFT_MAKKI_PROJECT_PLAN_2026-10-31_v0.2.md, generated 2026-10-31): card office-textline \"The labourer text line (verify by text, no login)\" on finish line 2",
   "necessityVia": "the canonical row V137's tag (tracker.json, reconciled over all 566 live rows)",
   "necessityWord": "Needed for launch",
   "plainTitle": "That same link must open with no account and no login — \"kept saying that I'm not…",
   "outcome": "Needs both Omar and the owner — not started; a joint word closes it.",
   "next": "The link page is built and opens with no login on demo data; the live send to a man's mobile stays held until the number is bought.",
   "group": "area-office",
   "groupName": "Office / Admin / Helpers",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "not-live",
   "liveWord": "not on the live build"
  },
  {
   "id": "V138",
   "whose": "build",
   "part": "walkthrough",
   "cat": "The owner's own asks",
   "title": "And it must still be valid when he taps it — \"and the link is not valid\"; asked \"Did you see the JHA?\" he answered \"No.\"",
   "status": "open",
   "ask": "The owner said it — he never saw the safety meeting at all",
   "askKind": "asked",
   "source": "@36:24, @36:19 (raw L393, L387)",
   "lands": "",
   "note": "needs a signed, expiring link per man per day, long-lived enough to survive a shift",
   "needs": "The signed link is built and opens on demo data; the live send of a fresh link to a man's mobile stays held until the number is bought.",
   "link": "ali-textnumber",
   "needsBefore": "Waits on the texting number (the owner says yes, Omar buys it) and the crew's mobiles",
   "key": "V138",
   "mapVia": "own id",
   "status5": "needs-both",
   "status5Via": "canonical V138: state blocked, waiting on Both",
   "status5Word": "Needs both",
   "canonicalId": "V138",
   "canonicalState": "blocked",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "necessity": "needed-for-launch",
   "necessitySource": "plan v0.2 (materials/handoff/2026-10-31_0102_audit-v2.4/DRAFT_MAKKI_PROJECT_PLAN_2026-10-31_v0.2.md, generated 2026-10-31): card office-textline \"The labourer text line (verify by text, no login)\" on finish line 2",
   "necessityVia": "the canonical row V138's tag (tracker.json, reconciled over all 566 live rows)",
   "necessityWord": "Needed for launch",
   "plainTitle": "And it must still be valid when he taps it — \"and the link is not valid\"; asked \"Did you…",
   "outcome": "Needs both Omar and the owner — not started; a joint word closes it.",
   "next": "The signed link is built and opens on demo data; the live send of a fresh link to a man's mobile stays held until the number is bought.",
   "group": "area-office",
   "groupName": "Office / Admin / Helpers",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "not-live",
   "liveWord": "not on the live build"
  },
  {
   "id": "V139",
   "whose": "build",
   "part": "walkthrough",
   "cat": "The owner's own asks",
   "title": "Ten project-manager seats — \"we'd have 10 project managers on there\"",
   "status": "open",
   "ask": "The owner said it",
   "askKind": "asked",
   "source": "@39:47 (raw L418)",
   "lands": "12",
   "note": "needs a project-manager role between Owner and Site lead; the app has one owner and five demo logins, not a roster of ten",
   "needs": "Nothing blocks it: the hive builds it on demo data",
   "link": "",
   "key": "V139",
   "mapVia": "own id",
   "status5": "completed",
   "status5Via": "canonical V139: state review, waiting on none",
   "status5Word": "Completed",
   "canonicalId": "V139",
   "coveredBy": {
    "gl": "GL-013",
    "extent": "covered",
    "source": "GO_LIVE.md row GL-013 (profile/Master_List_2026-09-16.md; written 2026-09-26): \"Built 2026-09-27 (gl-wave5-admin), live v30-admin 2026-10-03\" (hive/checks/2026-09-27_gl-wave5-admin.md, criteria 13–22 and 28); state review in the canonical accounting v2.4 (2026-10-31)",
    "uncovered": null,
    "why": "the V row asks for ten project-manager seats; GL-013 is the project-manager role and the ten-seat roster",
    "glState": "review",
    "glTitle": "Ten project-manager seats — a project-manager role between Owner and Site lead: his own jobs, his own crews, budget but not company profit; turns Team & Acce…",
    "gradeFile": "hive/checks/2026-09-27_gl-wave5-admin.md",
    "accepted": false
   },
   "canonicalState": "review",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "plainTitle": "Ten project-manager seats — \"we'd have 10 project managers on there\"",
   "outcome": "Completed on demo data: a later go-live row built this and reported it finished; the older wording of this row is kept in its details.",
   "next": "Nothing left to build here: the later row that built it carries the report and its review record.",
   "group": "area-mgmt",
   "groupName": "Management (owner · PM · lead)",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "id": "P1",
   "whose": "build",
   "part": "app",
   "cat": "The app: sign-in",
   "title": "Sign in to your dashboard",
   "status": "done",
   "ask": "",
   "askKind": "shown",
   "source": "everyone (before sign-in)",
   "lands": "",
   "note": "Click any of 5 role cards to auto-fill its credentials · type username + password · press Enter or Sign in → · sign in as an owner-created team member with emai",
   "needs": "",
   "link": "",
   "key": "P1",
   "mapVia": "own id",
   "status5": "completed",
   "status5Via": "canonical P1: state complete, waiting on none",
   "status5Word": "Completed",
   "canonicalId": "P1",
   "canonicalState": "complete",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "plainTitle": "Sign in to your dashboard",
   "outcome": "Completed on demo data: built, recorded finished in the task accounting of 31 October 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come.",
   "group": "area-mgmt",
   "groupName": "Management (owner · PM · lead)",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "id": "P2",
   "whose": "build",
   "part": "app",
   "cat": "The app: owner's pages",
   "title": "Dashboard — Owner / Company Overview",
   "status": "done",
   "ask": "",
   "askKind": "shown",
   "source": "Owner",
   "lands": "",
   "note": "Read 4 hero cards (Revenue, Jobs, Outstanding, Profit) each with a sparkline and a click-through to another tab · Job sites map (app-map.js): hover or focus a p",
   "needs": "",
   "link": "",
   "key": "P2",
   "mapVia": "alias, same title",
   "mapEvidence": "F01 lists P2 as its alias under this row's own title — canonical accounting v2.4 (materials/canonical/2026-10-31_canonical-tasks.v2.4.json, generated 2026-10-31)",
   "status5": "completed",
   "status5Via": "canonical F01: state complete, waiting on none",
   "status5Word": "Completed",
   "canonicalId": "F01",
   "canonicalState": "complete",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "recorded accepted in the canonical accounting, no ruling line carries the id",
   "plainTitle": "Dashboard — Owner / Company Overview",
   "outcome": "Completed on demo data: built, recorded finished in the task accounting of 31 October 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come.",
   "group": "area-mgmt",
   "groupName": "Management (owner · PM · lead)",
   "alsoAreas": [
    "Safety · Tickets · People",
    "Equipment / QR / Inventory"
   ],
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "id": "P3",
   "whose": "build",
   "part": "app",
   "cat": "The app: owner's pages",
   "title": "Pipeline — Sales Pipeline",
   "status": "done",
   "ask": "",
   "askKind": "shown",
   "source": "Owner",
   "lands": "",
   "note": "Read 4 KPIs (quotes sent, quote value, win rate, won value) · quote value by year bars · win rate by year bars · Recent quotes table with live search and an Out",
   "needs": "",
   "link": "",
   "key": "P3",
   "mapVia": "own id",
   "status5": "completed",
   "status5Via": "canonical P3: state complete, waiting on none",
   "status5Word": "Completed",
   "canonicalId": "P3",
   "canonicalState": "complete",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "plainTitle": "Pipeline — Sales Pipeline",
   "outcome": "Completed on demo data: built, recorded finished in the task accounting of 31 October 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come.",
   "group": "area-sales",
   "groupName": "Sales / Estimating",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "id": "P4",
   "whose": "build",
   "part": "app",
   "cat": "The app: owner's pages",
   "title": "Proposals",
   "status": "done",
   "ask": "",
   "askKind": "shown",
   "source": "Owner",
   "lands": "",
   "note": "marked DRAFT; the owner sends it, nothing is emailed",
   "needs": "",
   "link": "",
   "key": "P4",
   "mapVia": "own id",
   "status5": "completed",
   "status5Via": "canonical P4: state complete, waiting on none",
   "status5Word": "Completed",
   "canonicalId": "P4",
   "canonicalState": "complete",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "plainTitle": "Proposals",
   "outcome": "Completed on demo data: built, recorded finished in the task accounting of 31 October 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come.",
   "group": "area-sales",
   "groupName": "Sales / Estimating",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "id": "P5",
   "whose": "build",
   "part": "app",
   "cat": "The app: owner's pages",
   "title": "Jobs & P&L",
   "status": "done",
   "ask": "",
   "askKind": "shown",
   "source": "Owner",
   "lands": "",
   "note": "Every won job with demo date, project, invoice, PM, contract, cost, profit, margin, status · live search + Year / Month / Status / PM filters · click any row to",
   "needs": "",
   "link": "",
   "key": "P5",
   "mapVia": "own id",
   "status5": "completed",
   "status5Via": "canonical P5: state complete, waiting on none",
   "status5Word": "Completed",
   "canonicalId": "P5",
   "canonicalState": "complete",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "plainTitle": "Jobs & P&L",
   "outcome": "Completed on demo data: built, recorded finished in the task accounting of 31 October 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come.",
   "group": "area-fin",
   "groupName": "Finance / QuickBooks",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "id": "P6",
   "whose": "build",
   "part": "app",
   "cat": "The app: owner's pages",
   "title": "Project Book",
   "status": "done",
   "ask": "",
   "askKind": "shown",
   "source": "Owner",
   "lands": "",
   "note": "4 KPIs (permits expiring, permits expired, no permit on file, men blocked) · open-jobs table: job, site, client, crew, permit pills, extra tickets the job needs",
   "needs": "",
   "link": "",
   "key": "P6",
   "mapVia": "alias, same title",
   "mapEvidence": "V30·codex lists P6 as its alias under this row's own title — canonical accounting v2.4 (materials/canonical/2026-10-31_canonical-tasks.v2.4.json, generated 2026-10-31)",
   "status5": "completed",
   "status5Via": "canonical V30·codex: state complete, waiting on none",
   "status5Word": "Completed",
   "canonicalId": "V30·codex",
   "canonicalState": "complete",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "recorded accepted in the canonical accounting, no ruling line carries the id",
   "plainTitle": "Project Book",
   "outcome": "Completed on demo data: built, recorded finished in the task accounting of 31 October 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come.",
   "group": "area-mgmt",
   "groupName": "Management (owner · PM · lead)",
   "alsoAreas": [
    "Finance / QuickBooks"
   ],
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "id": "P7",
   "whose": "build",
   "part": "app",
   "cat": "The app: owner's pages",
   "title": "Schedule Board",
   "status": "done",
   "ask": "",
   "askKind": "shown",
   "source": "Owner",
   "lands": "",
   "note": "Crews × 6 days grid · ← Previous week / This week / Next week → · click any cell to open the slot picker (choose a site or \"No work / off\", Save or Cancel) · dr",
   "needs": "",
   "link": "",
   "key": "P7",
   "mapVia": "own id",
   "status5": "completed",
   "status5Via": "canonical P7: state complete, waiting on none",
   "status5Word": "Completed",
   "canonicalId": "P7",
   "canonicalState": "complete",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "plainTitle": "Schedule Board",
   "outcome": "Completed on demo data: built, recorded finished in the task accounting of 31 October 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come.",
   "group": "area-mgmt",
   "groupName": "Management (owner · PM · lead)",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "id": "P8",
   "whose": "build",
   "part": "app",
   "cat": "The app: owner's pages",
   "title": "Timeline",
   "status": "done",
   "ask": "",
   "askKind": "shown",
   "source": "Owner",
   "lands": "",
   "note": "Read-only Gantt: open jobs as bars grouped by crew, week headers, a Today line, colours for Open / Partial / Not started, a hatched \"estimated span\", a \"No crew",
   "needs": "",
   "link": "",
   "key": "P8",
   "mapVia": "own id",
   "status5": "completed",
   "status5Via": "canonical P8: state complete, waiting on none",
   "status5Word": "Completed",
   "canonicalId": "P8",
   "canonicalState": "complete",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "plainTitle": "Timeline",
   "outcome": "Completed on demo data: built, recorded finished in the task accounting of 31 October 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come.",
   "group": "area-mgmt",
   "groupName": "Management (owner · PM · lead)",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "id": "P9",
   "whose": "build",
   "part": "app",
   "cat": "The app: owner's pages",
   "title": "Collections — Collections & AR",
   "status": "done",
   "ask": "",
   "askKind": "shown",
   "source": "Owner",
   "lands": "",
   "note": "4 KPIs (total outstanding, holdbacks, in court, to invoice) · open receivables table — project, invoice, status, owed incl GST, GST, demo date, age — oldest fir",
   "needs": "",
   "link": "",
   "key": "P9",
   "mapVia": "own id",
   "status5": "completed",
   "status5Via": "canonical P9: state complete, waiting on none",
   "status5Word": "Completed",
   "canonicalId": "P9",
   "canonicalState": "complete",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "plainTitle": "Collections — Collections & AR",
   "outcome": "Completed on demo data: built, recorded finished in the task accounting of 31 October 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come.",
   "group": "area-fin",
   "groupName": "Finance / QuickBooks",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "id": "P10",
   "whose": "build",
   "part": "app",
   "cat": "The app: owner's pages",
   "title": "Payroll — Payroll Approval",
   "status": "done",
   "ask": "",
   "askKind": "shown",
   "source": "Owner",
   "lands": "",
   "note": "← Previous week / This week / Next week → · Export CSV (downloads a file headed \"DEMO DATA\", owner export includes rate and pay) · Approve this week (records wh",
   "needs": "",
   "link": "",
   "key": "P10",
   "mapVia": "own id",
   "status5": "completed",
   "status5Via": "canonical P10: state complete, waiting on none",
   "status5Word": "Completed",
   "canonicalId": "P10",
   "canonicalState": "complete",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "plainTitle": "Payroll — Payroll Approval",
   "outcome": "Completed on demo data: built, recorded finished in the task accounting of 31 October 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come.",
   "group": "area-fin",
   "groupName": "Finance / QuickBooks",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "id": "P11",
   "whose": "build",
   "part": "app",
   "cat": "The app: owner's pages",
   "title": "QuickBooks — QuickBooks Online",
   "status": "part",
   "ask": "",
   "askKind": "shown",
   "source": "Owner",
   "lands": "",
   "note": "a settings page, no integration",
   "needs": "Waits on Owner: fifteen minutes on QuickBooks Online",
   "link": "ali-quickbooks",
   "key": "P11",
   "mapVia": "own id",
   "status5": "needs-ali",
   "status5Via": "canonical P11: state partial, waiting on the owner",
   "status5Word": "Needs Ali",
   "canonicalId": "P11",
   "canonicalState": "partial",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "necessity": "needed-for-launch",
   "necessitySource": "plan v0.2 (materials/handoff/2026-10-31_0102_audit-v2.4/DRAFT_MAKKI_PROJECT_PLAN_2026-10-31_v0.2.md, generated 2026-10-31): card fin-qbo \"QuickBooks Online connection, first import and The Books\" on finish line 2",
   "necessityVia": "the canonical row P11's tag (tracker.json, reconciled over all 566 live rows)",
   "necessityWord": "Needed for launch",
   "plainTitle": "QuickBooks — QuickBooks Online",
   "outcome": "Needs Ali: partly built — it waits on the owner.",
   "next": "Waits on Owner: fifteen minutes on QuickBooks Online",
   "group": "area-fin",
   "groupName": "Finance / QuickBooks",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "not-live",
   "liveWord": "not on the live build"
  },
  {
   "id": "P12",
   "whose": "build",
   "part": "app",
   "cat": "The app: owner's pages",
   "title": "Team & Access",
   "status": "done",
   "ask": "",
   "askKind": "shown",
   "source": "Owner",
   "lands": "",
   "note": "owner-only, refuses to render for any other login",
   "needs": "",
   "link": "",
   "key": "P12",
   "mapVia": "own id",
   "status5": "completed",
   "status5Via": "canonical P12: state complete, waiting on none",
   "status5Word": "Completed",
   "canonicalId": "P12",
   "canonicalState": "complete",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "plainTitle": "Team & Access",
   "outcome": "Completed on demo data: built, recorded finished in the task accounting of 31 October 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come.",
   "group": "area-mgmt",
   "groupName": "Management (owner · PM · lead)",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "id": "P13",
   "whose": "build",
   "part": "app",
   "cat": "The app: owner's pages",
   "title": "Tickets & Certs — Tickets & Certificates",
   "status": "done",
   "ask": "",
   "askKind": "shown",
   "source": "Owner",
   "lands": "",
   "note": "4 KPIs (men on the books, tickets in date, expiring, expired) · Needs attention table (man, ticket, expires, days left, status) with search and a Ticket filter,",
   "needs": "",
   "link": "",
   "key": "P13",
   "mapVia": "alias, same title",
   "mapEvidence": "F30 lists P13 as its alias under this row's own title — canonical accounting v2.4 (materials/canonical/2026-10-31_canonical-tasks.v2.4.json, generated 2026-10-31)",
   "status5": "completed",
   "status5Via": "canonical F30: state complete, waiting on none",
   "status5Word": "Completed",
   "canonicalId": "F30",
   "canonicalState": "complete",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "recorded accepted in the canonical accounting, no ruling line carries the id",
   "plainTitle": "Tickets & Certs — Tickets & Certificates",
   "outcome": "Completed on demo data: built, recorded finished in the task accounting of 31 October 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come.",
   "group": "area-safe",
   "groupName": "Safety · Tickets · People",
   "alsoAreas": [
    "Equipment / QR / Inventory"
   ],
   "canonAliases": [
    "P33"
   ],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "id": "P14",
   "whose": "build",
   "part": "app",
   "cat": "The app: owner's pages",
   "title": "Safety — Safety & Incidents",
   "status": "done",
   "ask": "",
   "askKind": "shown",
   "source": "Owner",
   "lands": "",
   "note": "the 11 documents are placeholders",
   "needs": "",
   "link": "",
   "key": "P14",
   "mapVia": "own id",
   "status5": "completed",
   "status5Via": "canonical P14: state complete, waiting on none",
   "status5Word": "Completed",
   "canonicalId": "P14",
   "canonicalState": "complete",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "plainTitle": "Safety — Safety & Incidents",
   "outcome": "Completed on demo data: built, recorded finished in the task accounting of 31 October 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come.",
   "group": "area-safe",
   "groupName": "Safety · Tickets · People",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "id": "P15",
   "whose": "build",
   "part": "app",
   "cat": "The app: owner's pages",
   "title": "Equipment — Equipment & Rentals",
   "status": "done",
   "ask": "",
   "askKind": "shown",
   "source": "Owner",
   "lands": "",
   "note": "the equipment list is invented; the owner has not given us his",
   "needs": "",
   "link": "",
   "key": "P15",
   "mapVia": "alias, same title",
   "mapEvidence": "F29 lists P15 as its alias under this row's own title — canonical accounting v2.4 (materials/canonical/2026-10-31_canonical-tasks.v2.4.json, generated 2026-10-31)",
   "status5": "completed",
   "status5Via": "canonical F29: state complete, waiting on none",
   "status5Word": "Completed",
   "canonicalId": "F29",
   "canonicalState": "complete",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "recorded accepted in the canonical accounting, no ruling line carries the id",
   "plainTitle": "Equipment — Equipment & Rentals",
   "outcome": "Completed on demo data: built, recorded finished in the task accounting of 31 October 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come.",
   "group": "area-gear",
   "groupName": "Equipment / QR / Inventory",
   "canonAliases": [
    "P35"
   ],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "id": "P16",
   "whose": "build",
   "part": "app",
   "cat": "The app: owner's pages",
   "title": "Inventory",
   "status": "done",
   "ask": "",
   "askKind": "shown",
   "source": "Owner",
   "lands": "",
   "note": "Stock-on-hand table (item, on hand, unit price, OK / Low stock) with search and a Status filter",
   "needs": "",
   "link": "",
   "key": "P16",
   "mapVia": "own id",
   "status5": "completed",
   "status5Via": "canonical P16: state complete, waiting on none",
   "status5Word": "Completed",
   "canonicalId": "P16",
   "canonicalState": "complete",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "plainTitle": "Inventory",
   "outcome": "Completed on demo data: built, recorded finished in the task accounting of 31 October 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come.",
   "group": "area-gear",
   "groupName": "Equipment / QR / Inventory",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "id": "P17",
   "whose": "build",
   "part": "app",
   "cat": "The app: bookkeeper's pages",
   "title": "Dashboard — Accounting Overview",
   "status": "done",
   "ask": "",
   "askKind": "shown",
   "source": "Bookkeeper",
   "lands": "",
   "note": "costs and profit are not on the objects this login receives",
   "needs": "",
   "link": "",
   "key": "P17",
   "mapVia": "alias, same title",
   "mapEvidence": "R08 lists P17 as its alias under this row's own title — canonical accounting v2.4 (materials/canonical/2026-10-31_canonical-tasks.v2.4.json, generated 2026-10-31)",
   "status5": "completed",
   "status5Via": "canonical R08: state complete, waiting on none",
   "status5Word": "Completed",
   "canonicalId": "R08",
   "canonicalState": "complete",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "recorded accepted in the canonical accounting, no ruling line carries the id",
   "plainTitle": "Dashboard — Accounting Overview",
   "outcome": "Completed on demo data: built, recorded finished in the task accounting of 31 October 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come.",
   "group": "area-fin",
   "groupName": "Finance / QuickBooks",
   "alsoAreas": [
    "Management (owner · PM · lead)",
    "Platform / Hosting / Launch"
   ],
   "canonAliases": [
    "P18",
    "P20"
   ],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "id": "P18",
   "whose": "build",
   "part": "app",
   "cat": "The app: bookkeeper's pages",
   "title": "Outstanding — Outstanding Receivables",
   "status": "done",
   "ask": "",
   "askKind": "shown",
   "source": "Bookkeeper",
   "lands": "",
   "note": "Money-owed table (project, invoice #, PO #, status, owed incl GST, GST, demo date, age), oldest first, with a total row, live search and a Status filter",
   "needs": "",
   "link": "",
   "key": "P18",
   "mapVia": "alias, same title",
   "mapEvidence": "R08 lists P18 as its alias under this row's own title — canonical accounting v2.4 (materials/canonical/2026-10-31_canonical-tasks.v2.4.json, generated 2026-10-31)",
   "status5": "completed",
   "status5Via": "canonical R08: state complete, waiting on none",
   "status5Word": "Completed",
   "canonicalId": "R08",
   "canonicalState": "complete",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "recorded accepted in the canonical accounting, no ruling line carries the id",
   "plainTitle": "Outstanding — Outstanding Receivables",
   "outcome": "Completed on demo data: built, recorded finished in the task accounting of 31 October 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come.",
   "group": "area-fin",
   "groupName": "Finance / QuickBooks",
   "alsoAreas": [
    "Management (owner · PM · lead)",
    "Platform / Hosting / Launch"
   ],
   "canonAliases": [
    "P17",
    "P20"
   ],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "id": "P19",
   "whose": "build",
   "part": "app",
   "cat": "The app: bookkeeper's pages",
   "title": "To Invoice",
   "status": "done",
   "ask": "",
   "askKind": "shown",
   "source": "Bookkeeper",
   "lands": "",
   "note": "Finished-but-unbilled jobs (project, PO #, demo date, age, invoice value, + GST 5%) with a total row and live search",
   "needs": "",
   "link": "",
   "key": "P19",
   "mapVia": "alias, same title",
   "mapEvidence": "R11 lists P19 as its alias under this row's own title — canonical accounting v2.4 (materials/canonical/2026-10-31_canonical-tasks.v2.4.json, generated 2026-10-31)",
   "status5": "completed",
   "status5Via": "canonical R11: state complete, waiting on none",
   "status5Word": "Completed",
   "canonicalId": "R11",
   "canonicalState": "complete",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "ruled",
   "finalReviewRef": "hive/checks/2026-10-25_workflows-b1.r1c.grade.md:33",
   "finalReviewVia": "the Checker's ruling on R11 (named R11 on that line) — a detail, never the status",
   "plainTitle": "To Invoice",
   "outcome": "Completed on demo data: built, recorded finished in the task accounting of 31 October 2026; a final review on evidence ruled on it.",
   "next": "Nothing further: the final review ruled on this row.",
   "group": "area-fin",
   "groupName": "Finance / QuickBooks",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "the review on evidence that named this row as R11 and ruled on it — the ruling line of the grade file",
    "tag": "makki-portal-v39-od1",
    "date": "25 October 2026",
    "evidence": "hive/checks/2026-10-25_workflows-b1.r1c.grade.md",
    "namedAs": "R11",
    "note": "ruled on an earlier release (makki-portal-v39-od1, makki-portal-v40-tt1) — the live release (makki-portal-v43-wb4) has not been tested for this row, so it reads unknown; the ruling stays the final-review detail"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "id": "P20",
   "whose": "build",
   "part": "app",
   "cat": "The app: bookkeeper's pages",
   "title": "Payments",
   "status": "done",
   "ask": "",
   "askKind": "shown",
   "source": "Bookkeeper",
   "lands": "",
   "note": "3 KPIs (paid/settled, still owed, total invoices) · invoice-status donut",
   "needs": "",
   "link": "",
   "key": "P20",
   "mapVia": "alias, same title",
   "mapEvidence": "R08 lists P20 as its alias under this row's own title — canonical accounting v2.4 (materials/canonical/2026-10-31_canonical-tasks.v2.4.json, generated 2026-10-31)",
   "status5": "completed",
   "status5Via": "canonical R08: state complete, waiting on none",
   "status5Word": "Completed",
   "canonicalId": "R08",
   "canonicalState": "complete",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "recorded accepted in the canonical accounting, no ruling line carries the id",
   "plainTitle": "Payments",
   "outcome": "Completed on demo data: built, recorded finished in the task accounting of 31 October 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come.",
   "group": "area-fin",
   "groupName": "Finance / QuickBooks",
   "alsoAreas": [
    "Management (owner · PM · lead)",
    "Platform / Hosting / Launch"
   ],
   "canonAliases": [
    "P17",
    "P18"
   ],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "id": "P21",
   "whose": "build",
   "part": "app",
   "cat": "The app: bookkeeper's pages",
   "title": "Payroll hours",
   "status": "done",
   "ask": "",
   "askKind": "shown",
   "source": "Bookkeeper",
   "lands": "",
   "note": "switched OFF by default (TABS.book, the only tab in the app that ships off); the owner switches it on for her on Team & Access",
   "needs": "",
   "link": "",
   "key": "P21",
   "mapVia": "alias, same title",
   "mapEvidence": "V05·codex lists P21 as its alias under this row's own title — canonical accounting v2.4 (materials/canonical/2026-10-31_canonical-tasks.v2.4.json, generated 2026-10-31)",
   "status5": "completed",
   "status5Via": "canonical V05·codex: state complete, waiting on none",
   "status5Word": "Completed",
   "canonicalId": "V05·codex",
   "canonicalState": "complete",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "recorded accepted in the canonical accounting, no ruling line carries the id",
   "plainTitle": "Payroll hours",
   "outcome": "Completed on demo data: built, recorded finished in the task accounting of 31 October 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come.",
   "group": "area-fin",
   "groupName": "Finance / QuickBooks",
   "alsoAreas": [
    "Management (owner · PM · lead)",
    "Platform / Hosting / Launch"
   ],
   "canonAliases": [
    "V129"
   ],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "id": "P22",
   "whose": "build",
   "part": "app",
   "cat": "The app: estimator's pages",
   "title": "Dashboard — Estimating Overview",
   "status": "done",
   "ask": "",
   "askKind": "shown",
   "source": "Estimator",
   "lands": "",
   "note": "4 hero cards (quotes out, win rate, won value, average quote) · Quoted vs Won trend bucketed by quote date, with a period dropdown and a hover tooltip · recent-",
   "needs": "",
   "link": "",
   "key": "P22",
   "mapVia": "own id",
   "status5": "completed",
   "status5Via": "canonical P22: state complete, waiting on none",
   "status5Word": "Completed",
   "canonicalId": "P22",
   "canonicalState": "complete",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "plainTitle": "Dashboard — Estimating Overview",
   "outcome": "Completed on demo data: built, recorded finished in the task accounting of 31 October 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come.",
   "group": "area-mgmt",
   "groupName": "Management (owner · PM · lead)",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "id": "P23",
   "whose": "build",
   "part": "app",
   "cat": "The app: estimator's pages",
   "title": "My Quotes",
   "status": "done",
   "ask": "",
   "askKind": "shown",
   "source": "Estimator",
   "lands": "",
   "note": "Every quote he wrote (quote date, site, quoted, won / open-lost, year) with search and Outcome / Year filters",
   "needs": "",
   "link": "",
   "key": "P23",
   "mapVia": "own id",
   "status5": "completed",
   "status5Via": "canonical P23: state complete, waiting on none",
   "status5Word": "Completed",
   "canonicalId": "P23",
   "canonicalState": "complete",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "plainTitle": "My Quotes",
   "outcome": "Completed on demo data: built, recorded finished in the task accounting of 31 October 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come.",
   "group": "area-sales",
   "groupName": "Sales / Estimating",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "id": "P24",
   "whose": "build",
   "part": "app",
   "cat": "The app: estimator's pages",
   "title": "Win Rate — My Win Rate",
   "status": "done",
   "ask": "",
   "askKind": "shown",
   "source": "Estimator",
   "lands": "",
   "note": "4 KPIs · win rate by year bars · quoted value by year bars · a year-by-year table",
   "needs": "",
   "link": "",
   "key": "P24",
   "mapVia": "own id",
   "status5": "completed",
   "status5Via": "canonical P24: state complete, waiting on none",
   "status5Word": "Completed",
   "canonicalId": "P24",
   "canonicalState": "complete",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "plainTitle": "Win Rate — My Win Rate",
   "outcome": "Completed on demo data: built, recorded finished in the task accounting of 31 October 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come.",
   "group": "area-sales",
   "groupName": "Sales / Estimating",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "id": "P25",
   "whose": "build",
   "part": "app",
   "cat": "The app: estimator's pages",
   "title": "Proposals",
   "status": "done",
   "ask": "",
   "askKind": "shown",
   "source": "Estimator",
   "lands": "",
   "note": "The same proposal builder as row 4, limited to his own quotes and with no estimator column, no sell price, no profit",
   "needs": "",
   "link": "",
   "key": "P25",
   "mapVia": "own id",
   "status5": "completed",
   "status5Via": "canonical P25: state complete, waiting on none",
   "status5Word": "Completed",
   "canonicalId": "P25",
   "canonicalState": "complete",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "plainTitle": "Proposals",
   "outcome": "Completed on demo data: built, recorded finished in the task accounting of 31 October 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come.",
   "group": "area-sales",
   "groupName": "Sales / Estimating",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "id": "P26",
   "whose": "build",
   "part": "app",
   "cat": "The app: estimator's pages",
   "title": "Bid vs Actual",
   "status": "done",
   "ask": "",
   "askKind": "shown",
   "source": "Estimator",
   "lands": "",
   "note": "4 KPIs (jobs, budget, spent so far, codes over budget) · one panel per open job he bid, each with its cost-code table (code, name, budget, spent, used bar, %) a",
   "needs": "",
   "link": "",
   "key": "P26",
   "mapVia": "alias, same title",
   "mapEvidence": "F06 lists P26 as its alias under this row's own title — canonical accounting v2.4 (materials/canonical/2026-10-31_canonical-tasks.v2.4.json, generated 2026-10-31)",
   "status5": "completed",
   "status5Via": "canonical F06: state complete, waiting on none",
   "status5Word": "Completed",
   "canonicalId": "F06",
   "canonicalState": "complete",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "recorded accepted in the canonical accounting, no ruling line carries the id",
   "plainTitle": "Bid vs Actual",
   "outcome": "Completed on demo data: built, recorded finished in the task accounting of 31 October 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come.",
   "group": "area-fin",
   "groupName": "Finance / QuickBooks",
   "alsoAreas": [
    "Management (owner · PM · lead)"
   ],
   "canonAliases": [
    "A24"
   ],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "id": "P27",
   "whose": "build",
   "part": "app",
   "cat": "The app: site lead's pages",
   "title": "Dashboard — My Overview",
   "status": "done",
   "ask": "",
   "askKind": "shown",
   "source": "Site lead",
   "lands": "",
   "note": "4 hero cards (my jobs, active now, contract value, upcoming demos) · the job-site map, his jobs only · Contract vs Cost trend with a period dropdown · a line st",
   "needs": "",
   "link": "",
   "key": "P27",
   "mapVia": "own id",
   "status5": "completed",
   "status5Via": "canonical P27: state complete, waiting on none",
   "status5Word": "Completed",
   "canonicalId": "P27",
   "canonicalState": "complete",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "plainTitle": "Dashboard — My Overview",
   "outcome": "Completed on demo data: built, recorded finished in the task accounting of 31 October 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come.",
   "group": "area-mgmt",
   "groupName": "Management (owner · PM · lead)",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "id": "P28",
   "whose": "build",
   "part": "app",
   "cat": "The app: site lead's pages",
   "title": "Start Day",
   "status": "done",
   "ask": "",
   "askKind": "shown",
   "source": "Site lead",
   "lands": "",
   "note": "in-app only; texting is not switched on",
   "needs": "",
   "link": "",
   "key": "P28",
   "mapVia": "own id",
   "status5": "completed",
   "status5Via": "canonical P28: state complete, waiting on none",
   "status5Word": "Completed",
   "canonicalId": "P28",
   "canonicalState": "complete",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "plainTitle": "Start Day",
   "outcome": "Completed on demo data: built, recorded finished in the task accounting of 31 October 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come.",
   "group": "area-crew",
   "groupName": "Crew (the field day)",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "id": "P29",
   "whose": "build",
   "part": "app",
   "cat": "The app: site lead's pages",
   "title": "My Jobs",
   "status": "done",
   "ask": "",
   "askKind": "shown",
   "source": "Site lead",
   "lands": "",
   "note": "Assigned jobs with demo date, project, status, contract, actual cost and a cost-vs-contract bar; search and a Status filter; click a row for the job modal (his ",
   "needs": "",
   "link": "",
   "key": "P29",
   "mapVia": "own id",
   "status5": "completed",
   "status5Via": "canonical P29: state complete, waiting on none",
   "status5Word": "Completed",
   "canonicalId": "P29",
   "canonicalState": "complete",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "plainTitle": "My Jobs",
   "outcome": "Completed on demo data: built, recorded finished in the task accounting of 31 October 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come.",
   "group": "area-mgmt",
   "groupName": "Management (owner · PM · lead)",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "id": "P30",
   "whose": "build",
   "part": "app",
   "cat": "The app: site lead's pages",
   "title": "Schedule — My Schedule",
   "status": "done",
   "ask": "",
   "askKind": "shown",
   "source": "Site lead",
   "lands": "",
   "note": "Upcoming demos table and Completed table, each with search and a Status filter, each row clickable into the job",
   "needs": "",
   "link": "",
   "key": "P30",
   "mapVia": "own id",
   "status5": "completed",
   "status5Via": "canonical P30: state complete, waiting on none",
   "status5Word": "Completed",
   "canonicalId": "P30",
   "canonicalState": "complete",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "plainTitle": "Schedule — My Schedule",
   "outcome": "Completed on demo data: built, recorded finished in the task accounting of 31 October 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come.",
   "group": "area-mgmt",
   "groupName": "Management (owner · PM · lead)",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "id": "P31",
   "whose": "build",
   "part": "app",
   "cat": "The app: site lead's pages",
   "title": "Crew Board",
   "status": "done",
   "ask": "",
   "askKind": "shown",
   "source": "Site lead",
   "lands": "",
   "note": "The same board as row 7 limited to his own crew — week navigation, click a cell to move the crew, drag-and-drop with the same ticket refusal, and the in-app tex",
   "needs": "",
   "link": "",
   "key": "P31",
   "mapVia": "own id",
   "status5": "completed",
   "status5Via": "canonical P31: state complete, waiting on none",
   "status5Word": "Completed",
   "canonicalId": "P31",
   "canonicalState": "complete",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "plainTitle": "Crew Board",
   "outcome": "Completed on demo data: built, recorded finished in the task accounting of 31 October 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come.",
   "group": "area-mgmt",
   "groupName": "Management (owner · PM · lead)",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "id": "P32",
   "whose": "build",
   "part": "app",
   "cat": "The app: site lead's pages",
   "title": "Timeline",
   "status": "done",
   "ask": "",
   "askKind": "shown",
   "source": "Site lead",
   "lands": "",
   "note": "The same Gantt as row 8, his crew's jobs only",
   "needs": "",
   "link": "",
   "key": "P32",
   "mapVia": "own id",
   "status5": "completed",
   "status5Via": "canonical P32: state complete, waiting on none",
   "status5Word": "Completed",
   "canonicalId": "P32",
   "canonicalState": "complete",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "plainTitle": "Timeline",
   "outcome": "Completed on demo data: built, recorded finished in the task accounting of 31 October 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come.",
   "group": "area-mgmt",
   "groupName": "Management (owner · PM · lead)",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "id": "P33",
   "whose": "build",
   "part": "app",
   "cat": "The app: site lead's pages",
   "title": "My Crew",
   "status": "done",
   "ask": "",
   "askKind": "shown",
   "source": "Site lead",
   "lands": "",
   "note": "The same ticket page as row 13 limited to his crew, including Put a man on a crew (his crew only), the attention list, the archive and each man's file — but wit",
   "needs": "",
   "link": "",
   "key": "P33",
   "mapVia": "alias, same title",
   "mapEvidence": "F30 lists P33 as its alias under this row's own title — canonical accounting v2.4 (materials/canonical/2026-10-31_canonical-tasks.v2.4.json, generated 2026-10-31)",
   "status5": "completed",
   "status5Via": "canonical F30: state complete, waiting on none",
   "status5Word": "Completed",
   "canonicalId": "F30",
   "canonicalState": "complete",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "recorded accepted in the canonical accounting, no ruling line carries the id",
   "plainTitle": "My Crew",
   "outcome": "Completed on demo data: built, recorded finished in the task accounting of 31 October 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come.",
   "group": "area-safe",
   "groupName": "Safety · Tickets · People",
   "alsoAreas": [
    "Equipment / QR / Inventory"
   ],
   "canonAliases": [
    "P13"
   ],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "id": "P34",
   "whose": "build",
   "part": "app",
   "cat": "The app: site lead's pages",
   "title": "Safety — Safety & Incidents",
   "status": "done",
   "ask": "",
   "askKind": "shown",
   "source": "Site lead",
   "lands": "",
   "note": "The same safety page as row 14, his jobs only, including reporting an incident, logging an inspection, closing a corrective action and the document library",
   "needs": "",
   "link": "",
   "key": "P34",
   "mapVia": "own id",
   "status5": "completed",
   "status5Via": "canonical P34: state complete, waiting on none",
   "status5Word": "Completed",
   "canonicalId": "P34",
   "canonicalState": "complete",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "plainTitle": "Safety — Safety & Incidents",
   "outcome": "Completed on demo data: built, recorded finished in the task accounting of 31 October 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come.",
   "group": "area-safe",
   "groupName": "Safety · Tickets · People",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "id": "P35",
   "whose": "build",
   "part": "app",
   "cat": "The app: site lead's pages",
   "title": "Equipment — Equipment & Rentals",
   "status": "done",
   "ask": "",
   "askKind": "shown",
   "source": "Site lead",
   "lands": "",
   "note": "The same equipment page as row 15 with no value and no day-rate column",
   "needs": "",
   "link": "",
   "key": "P35",
   "mapVia": "alias, same title",
   "mapEvidence": "F29 lists P35 as its alias under this row's own title — canonical accounting v2.4 (materials/canonical/2026-10-31_canonical-tasks.v2.4.json, generated 2026-10-31)",
   "status5": "completed",
   "status5Via": "canonical F29: state complete, waiting on none",
   "status5Word": "Completed",
   "canonicalId": "F29",
   "canonicalState": "complete",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "recorded accepted in the canonical accounting, no ruling line carries the id",
   "plainTitle": "Equipment — Equipment & Rentals",
   "outcome": "Completed on demo data: built, recorded finished in the task accounting of 31 October 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come.",
   "group": "area-gear",
   "groupName": "Equipment / QR / Inventory",
   "canonAliases": [
    "P15"
   ],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "id": "P36",
   "whose": "build",
   "part": "app",
   "cat": "The app: site lead's pages",
   "title": "Materials",
   "status": "done",
   "ask": "",
   "askKind": "shown",
   "source": "Site lead",
   "lands": "",
   "note": "Shared disposal stock — the same table as row 16 with a \"shared across crews\" note",
   "needs": "",
   "link": "",
   "key": "P36",
   "mapVia": "own id",
   "status5": "completed",
   "status5Via": "canonical P36: state complete, waiting on none",
   "status5Word": "Completed",
   "canonicalId": "P36",
   "canonicalState": "complete",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "plainTitle": "Materials",
   "outcome": "Completed on demo data: built, recorded finished in the task accounting of 31 October 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come.",
   "group": "area-gear",
   "groupName": "Equipment / QR / Inventory",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "id": "P37",
   "whose": "build",
   "part": "app",
   "cat": "The app: crew's pages",
   "title": "Today",
   "status": "done",
   "ask": "",
   "askKind": "shown",
   "source": "Crew",
   "lands": "",
   "note": "His site card: address, task, demo date, crew, status, and a PPE reminder · the job-site map, tap a pin for the address and status — no drill-in for this login ",
   "needs": "",
   "link": "",
   "key": "P37",
   "mapVia": "own id",
   "status5": "completed",
   "status5Via": "canonical P37: state complete, waiting on none",
   "status5Word": "Completed",
   "canonicalId": "P37",
   "canonicalState": "complete",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "plainTitle": "Today",
   "outcome": "Completed on demo data: built, recorded finished in the task accounting of 31 October 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come.",
   "group": "area-crew",
   "groupName": "Crew (the field day)",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "id": "P38",
   "whose": "build",
   "part": "app",
   "cat": "The app: crew's pages",
   "title": "End of Day",
   "status": "done",
   "ask": "",
   "askKind": "shown",
   "source": "Crew",
   "lands": "",
   "note": "in-app; this is the question Fieldflo sends by text",
   "needs": "",
   "link": "",
   "key": "P38",
   "mapVia": "own id",
   "status5": "completed",
   "status5Via": "canonical P38: state complete, waiting on none",
   "status5Word": "Completed",
   "canonicalId": "P38",
   "canonicalState": "complete",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "plainTitle": "End of Day",
   "outcome": "Completed on demo data: built, recorded finished in the task accounting of 31 October 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come.",
   "group": "area-crew",
   "groupName": "Crew (the field day)",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "id": "P39",
   "whose": "build",
   "part": "app",
   "cat": "The app: crew's pages",
   "title": "My Schedule",
   "status": "done",
   "ask": "",
   "askKind": "shown",
   "source": "Crew",
   "lands": "",
   "note": "A six-day week strip showing where he is each day (today marked) · a full table of his crew's sites (demo date, site, task, status, age) with search and Status ",
   "needs": "",
   "link": "",
   "key": "P39",
   "mapVia": "own id",
   "status5": "completed",
   "status5Via": "canonical P39: state complete, waiting on none",
   "status5Word": "Completed",
   "canonicalId": "P39",
   "canonicalState": "complete",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "plainTitle": "My Schedule",
   "outcome": "Completed on demo data: built, recorded finished in the task accounting of 31 October 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come.",
   "group": "area-mgmt",
   "groupName": "Management (owner · PM · lead)",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "id": "P40",
   "whose": "build",
   "part": "app",
   "cat": "The app: crew's pages",
   "title": "My Tickets",
   "status": "done",
   "ask": "",
   "askKind": "shown",
   "source": "Crew",
   "lands": "",
   "note": "The code on your hard hat — his QR drawn on the device, his name, trade, crew and hat code, and See what the inspector sees · what he holds (expired ones includ",
   "needs": "",
   "link": "",
   "key": "P40",
   "mapVia": "alias, same title",
   "mapEvidence": "V19·codex lists P40 as its alias under this row's own title — canonical accounting v2.4 (materials/canonical/2026-10-31_canonical-tasks.v2.4.json, generated 2026-10-31)",
   "status5": "completed",
   "status5Via": "canonical V19·codex: state complete, waiting on none",
   "status5Word": "Completed",
   "canonicalId": "V19·codex",
   "canonicalState": "complete",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "recorded accepted in the canonical accounting, no ruling line carries the id",
   "plainTitle": "My Tickets",
   "outcome": "Completed on demo data: built, recorded finished in the task accounting of 31 October 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come.",
   "group": "area-gear",
   "groupName": "Equipment / QR / Inventory",
   "alsoAreas": [
    "Safety · Tickets · People"
   ],
   "canonAliases": [
    "P41",
    "A19",
    "A56"
   ],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "id": "P41",
   "whose": "build",
   "part": "app",
   "cat": "The app: no-login pages",
   "title": "Read-only ticket check",
   "status": "done",
   "ask": "",
   "askKind": "shown",
   "source": "No login — reached by scanning a hard hat (?hat=MK-xx, inspectorView in app.js:1412)",
   "lands": "",
   "note": "works offline, the code is drawn on the device",
   "needs": "",
   "link": "",
   "key": "P41",
   "mapVia": "alias, same title",
   "mapEvidence": "V19·codex lists P41 as its alias under this row's own title — canonical accounting v2.4 (materials/canonical/2026-10-31_canonical-tasks.v2.4.json, generated 2026-10-31)",
   "status5": "completed",
   "status5Via": "canonical V19·codex: state complete, waiting on none",
   "status5Word": "Completed",
   "canonicalId": "V19·codex",
   "canonicalState": "complete",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "recorded accepted in the canonical accounting, no ruling line carries the id",
   "plainTitle": "Read-only ticket check",
   "outcome": "Completed on demo data: built, recorded finished in the task accounting of 31 October 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come.",
   "group": "area-gear",
   "groupName": "Equipment / QR / Inventory",
   "alsoAreas": [
    "Safety · Tickets · People"
   ],
   "canonAliases": [
    "P40",
    "A19",
    "A56"
   ],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "id": "P42",
   "whose": "build",
   "part": "app",
   "cat": "The app: no-login pages",
   "title": "Read-only equipment check",
   "status": "done",
   "ask": "",
   "askKind": "shown",
   "source": "No login — reached by scanning an asset (?asset=xx, assetScanView in app-ops.js:462)",
   "lands": "",
   "note": "read-only; you cannot log an inspection from it",
   "needs": "",
   "link": "",
   "key": "P42",
   "mapVia": "own id",
   "status5": "completed",
   "status5Via": "canonical P42: state complete, waiting on none",
   "status5Word": "Completed",
   "canonicalId": "P42",
   "canonicalState": "complete",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "plainTitle": "Read-only equipment check",
   "outcome": "Completed on demo data: built, recorded finished in the task accounting of 31 October 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come.",
   "group": "area-gear",
   "groupName": "Equipment / QR / Inventory",
   "canonAliases": [
    "A57"
   ],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "id": "A1",
   "whose": "build",
   "part": "app",
   "cat": "The app: buttons & actions",
   "title": "Click a role card → fills that role's username and password",
   "status": "done",
   "ask": "",
   "askKind": "shown",
   "source": "everyone · Login screen",
   "lands": "",
   "note": "",
   "needs": "",
   "link": "",
   "key": "A1",
   "mapVia": "own id",
   "status5": "completed",
   "status5Via": "canonical A1: state complete, waiting on none",
   "status5Word": "Completed",
   "canonicalId": "A1",
   "canonicalState": "complete",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "plainTitle": "Click a role card → fills that role's username and password",
   "outcome": "Completed on demo data: built, recorded finished in the task accounting of 31 October 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come.",
   "group": "area-mgmt",
   "groupName": "Management (owner · PM · lead)",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "id": "A2",
   "whose": "build",
   "part": "app",
   "cat": "The app: buttons & actions",
   "title": "Install app → a sheet with the app icon, an Install app button, and per-platform steps for iPhone, Android and desktop; hides itself once installed",
   "status": "done",
   "ask": "",
   "askKind": "shown",
   "source": "everyone · Login screen + top bar",
   "lands": "",
   "note": "",
   "needs": "",
   "link": "",
   "key": "A2",
   "mapVia": "own id",
   "status5": "completed",
   "status5Via": "canonical A2: state complete, waiting on none",
   "status5Word": "Completed",
   "canonicalId": "A2",
   "canonicalState": "complete",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "plainTitle": "Install app → a sheet with the app icon, an Install app button, and per-platform steps…",
   "outcome": "Completed on demo data: built, recorded finished in the task accounting of 31 October 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come.",
   "group": "area-plat",
   "groupName": "Platform / Hosting / Launch",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "id": "A3",
   "whose": "build",
   "part": "app",
   "cat": "The app: buttons & actions",
   "title": "Search box — mirrors what you type into the current page's table filter; goes grey and disabled on a page with no table",
   "status": "done",
   "ask": "",
   "askKind": "shown",
   "source": "everyone · Top bar",
   "lands": "",
   "note": "",
   "needs": "",
   "link": "",
   "key": "A3",
   "mapVia": "own id",
   "status5": "completed",
   "status5Via": "canonical A3: state complete, waiting on none",
   "status5Word": "Completed",
   "canonicalId": "A3",
   "canonicalState": "complete",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "plainTitle": "Search box — mirrors what you type into the current page's table filter; goes grey and…",
   "outcome": "Completed on demo data: built, recorded finished in the task accounting of 31 October 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come.",
   "group": "area-mgmt",
   "groupName": "Management (owner · PM · lead)",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "id": "A4",
   "whose": "build",
   "part": "app",
   "cat": "The app: buttons & actions",
   "title": "Notifications bell → a popup with Mark all read; carries counts and dates only, never a dollar figure",
   "status": "done",
   "ask": "",
   "askKind": "shown",
   "source": "everyone · Top bar",
   "lands": "",
   "note": "rebuilt 2026-09-20 for the owner and the site lead: the bell is now a live bus (window.MAKKI_NOTIFY.fire in portal/app-notify.js) fed off the real incident register, change orders and the foreman's site notes, with an unread count and a link back to the record. The bookkeeper, estimator and crew logins still get the three hard-coded mock lines",
   "needs": "",
   "link": "",
   "completedPortion": "the bell for the owner and the site lead: popup, unread count, Mark all read",
   "remainderId": "A4-rest",
   "key": "A4",
   "mapVia": "own id",
   "status5": "completed",
   "status5Via": "canonical A4: state complete, waiting on none",
   "status5Word": "Completed",
   "canonicalId": "A4",
   "coveredBy": {
    "gl": "A4",
    "extent": "partly",
    "source": "profile/Master_List_2026-09-16.md:156 (A4): \"Built — rebuilt 2026-09-20 for the owner and the site lead … The bookkeeper, estimator and crew logins still get the three hard-coded mock lines\"; no grade file names A4 in the canonical accounting v2.4 (2026-10-31)",
    "uncovered": "the bookkeeper, estimator and crew logins still get three fixed sample lines in the bell",
    "why": "the bundled Completed covers the live bell for the owner and the site lead; the other three logins' bell is not in it",
    "glState": "complete",
    "glTitle": "Notifications bell → a popup with Mark all read; carries counts and dates only, never a dollar figure",
    "gradeFile": null,
    "accepted": false
   },
   "canonicalState": "complete",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "plainTitle": "Notifications bell → a popup with Mark all read; carries counts and dates only, never a…",
   "outcome": "Completed on demo data: the bell for the owner and the site lead: popup, unread count, Mark all read; the rest is its own row.",
   "next": "Nothing further here: the rest sits on its own row, A4-rest.",
   "group": "area-office",
   "groupName": "Office / Admin / Helpers",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "id": "A5",
   "whose": "build",
   "part": "app",
   "cat": "The app: buttons & actions",
   "title": "Sign out",
   "status": "done",
   "ask": "",
   "askKind": "shown",
   "source": "everyone · Top bar",
   "lands": "",
   "note": "",
   "needs": "",
   "link": "",
   "key": "A5",
   "mapVia": "own id",
   "status5": "completed",
   "status5Via": "canonical A5: state complete, waiting on none",
   "status5Word": "Completed",
   "canonicalId": "A5",
   "canonicalState": "complete",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "plainTitle": "Sign out",
   "outcome": "Completed on demo data: built, recorded finished in the task accounting of 31 October 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come.",
   "group": "area-mgmt",
   "groupName": "Management (owner · PM · lead)",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "id": "A6",
   "whose": "build",
   "part": "app",
   "cat": "The app: buttons & actions",
   "title": "Open / close a nav group (accordion); a group with one tab acts as that tab",
   "status": "done",
   "ask": "",
   "askKind": "shown",
   "source": "Owner · Left rail",
   "lands": "",
   "note": "",
   "needs": "",
   "link": "",
   "key": "A6",
   "mapVia": "own id",
   "status5": "completed",
   "status5Via": "canonical A6: state complete, waiting on none",
   "status5Word": "Completed",
   "canonicalId": "A6",
   "canonicalState": "complete",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "plainTitle": "Open / close a nav group (accordion); a group with one tab acts as that tab",
   "outcome": "Completed on demo data: built, recorded finished in the task accounting of 31 October 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come.",
   "group": "area-mgmt",
   "groupName": "Management (owner · PM · lead)",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "id": "A7",
   "whose": "build",
   "part": "app",
   "cat": "The app: buttons & actions",
   "title": "The sub-tab row on a phone (the bottom bar only has room for the 7 groups)",
   "status": "done",
   "ask": "",
   "askKind": "shown",
   "source": "Owner · Any page in a multi-tab group",
   "lands": "",
   "note": "",
   "needs": "",
   "link": "",
   "key": "A7",
   "mapVia": "own id",
   "status5": "completed",
   "status5Via": "canonical A7: state complete, waiting on none",
   "status5Word": "Completed",
   "canonicalId": "A7",
   "canonicalState": "complete",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "plainTitle": "The sub-tab row on a phone (the bottom bar only has room for the 7 groups)",
   "outcome": "Completed on demo data: built, recorded finished in the task accounting of 31 October 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come.",
   "group": "area-mgmt",
   "groupName": "Management (owner · PM · lead)",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "id": "A8",
   "whose": "build",
   "part": "app",
   "cat": "The app: buttons & actions",
   "title": "Live search + per-column dropdown filters, a live row count, and a \"No matching rows\" message; options are derived from the table's own cells",
   "status": "done",
   "ask": "",
   "askKind": "shown",
   "source": "everyone · Every table",
   "lands": "",
   "note": "",
   "needs": "",
   "link": "",
   "key": "A8",
   "mapVia": "own id",
   "status5": "completed",
   "status5Via": "canonical A8: state complete, waiting on none",
   "status5Word": "Completed",
   "canonicalId": "A8",
   "canonicalState": "complete",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "plainTitle": "Live search + per-column dropdown filters, a live row count, and a \"No matching rows\"…",
   "outcome": "Completed on demo data: built, recorded finished in the task accounting of 31 October 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come.",
   "group": "area-mgmt",
   "groupName": "Management (owner · PM · lead)",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "id": "A9",
   "whose": "build",
   "part": "app",
   "cat": "The app: buttons & actions",
   "title": "Period dropdown — re-buckets the same rows over a different trailing window and redraws the chart and the stat strip live",
   "status": "done",
   "ask": "",
   "askKind": "shown",
   "source": "Owner, Bookkeeper, Estimator, Site lead · Every trend panel",
   "lands": "",
   "note": "",
   "needs": "",
   "link": "",
   "key": "A9",
   "mapVia": "own id",
   "status5": "completed",
   "status5Via": "canonical A9: state complete, waiting on none",
   "status5Word": "Completed",
   "canonicalId": "A9",
   "canonicalState": "complete",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "plainTitle": "Period dropdown — re-buckets the same rows over a different trailing window and redraws…",
   "outcome": "Completed on demo data: built, recorded finished in the task accounting of 31 October 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come.",
   "group": "area-mgmt",
   "groupName": "Management (owner · PM · lead)",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "id": "A10",
   "whose": "build",
   "part": "app",
   "cat": "The app: buttons & actions",
   "title": "Hover or drag for a date + value tooltip, on mouse and on touch",
   "status": "done",
   "ask": "",
   "askKind": "shown",
   "source": "everyone with a chart · Every trend chart",
   "lands": "",
   "note": "",
   "needs": "",
   "link": "",
   "key": "A10",
   "mapVia": "own id",
   "status5": "completed",
   "status5Via": "canonical A10: state complete, waiting on none",
   "status5Word": "Completed",
   "canonicalId": "A10",
   "canonicalState": "complete",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "plainTitle": "Hover or drag for a date + value tooltip, on mouse and on touch",
   "outcome": "Completed on demo data: built, recorded finished in the task accounting of 31 October 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come.",
   "group": "area-mgmt",
   "groupName": "Management (owner · PM · lead)",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "id": "A11",
   "whose": "build",
   "part": "app",
   "cat": "The app: buttons & actions",
   "title": "Rows become label:value cards automatically",
   "status": "done",
   "ask": "",
   "askKind": "shown",
   "source": "everyone · Every table on a phone",
   "lands": "",
   "note": "",
   "needs": "",
   "link": "",
   "key": "A11",
   "mapVia": "own id",
   "status5": "completed",
   "status5Via": "canonical A11: state complete, waiting on none",
   "status5Word": "Completed",
   "canonicalId": "A11",
   "canonicalState": "complete",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "plainTitle": "Rows become label:value cards automatically",
   "outcome": "Completed on demo data: built, recorded finished in the task accounting of 31 October 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come.",
   "group": "area-mgmt",
   "groupName": "Management (owner · PM · lead)",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "id": "A12",
   "whose": "build",
   "part": "app",
   "cat": "The app: buttons & actions",
   "title": "Per-person, per-tab on/off switch — flip it, sign in as them, the tab is gone from their menu and will not open by link",
   "status": "done",
   "ask": "",
   "askKind": "shown",
   "source": "Owner · Team & Access",
   "lands": "",
   "note": "",
   "needs": "",
   "link": "",
   "key": "A12",
   "mapVia": "alias, same title",
   "mapEvidence": "V06·codex lists A12 as its alias under this row's own title — canonical accounting v2.4 (materials/canonical/2026-10-31_canonical-tasks.v2.4.json, generated 2026-10-31)",
   "status5": "completed",
   "status5Via": "canonical V06·codex: state complete, waiting on none",
   "status5Word": "Completed",
   "canonicalId": "V06·codex",
   "canonicalState": "complete",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "recorded accepted in the canonical accounting, no ruling line carries the id",
   "plainTitle": "Per-person, per-tab on/off switch — flip it, sign in as them, the tab is gone from their…",
   "outcome": "Completed on demo data: built, recorded finished in the task accounting of 31 October 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come.",
   "group": "area-mgmt",
   "groupName": "Management (owner · PM · lead)",
   "alsoAreas": [
    "Platform / Hosting / Launch",
    "Finance / QuickBooks"
   ],
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "id": "A13",
   "whose": "build",
   "part": "app",
   "cat": "The app: buttons & actions",
   "title": "Reset all switches back to the role defaults",
   "status": "done",
   "ask": "",
   "askKind": "shown",
   "source": "Owner · Team & Access",
   "lands": "",
   "note": "",
   "needs": "",
   "link": "",
   "key": "A13",
   "mapVia": "own id",
   "status5": "completed",
   "status5Via": "canonical A13: state complete, waiting on none",
   "status5Word": "Completed",
   "canonicalId": "A13",
   "canonicalState": "complete",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "plainTitle": "Reset all switches back to the role defaults",
   "outcome": "Completed on demo data: built, recorded finished in the task accounting of 31 October 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come.",
   "group": "area-mgmt",
   "groupName": "Management (owner · PM · lead)",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "id": "A14",
   "whose": "build",
   "part": "app",
   "cat": "The app: buttons & actions",
   "title": "Add member form → a working login saved on the device",
   "status": "done",
   "ask": "",
   "askKind": "shown",
   "source": "Owner · Team & Access",
   "lands": "",
   "note": "",
   "needs": "",
   "link": "",
   "key": "A14",
   "mapVia": "own id",
   "status5": "completed",
   "status5Via": "canonical A14: state complete, waiting on none",
   "status5Word": "Completed",
   "canonicalId": "A14",
   "canonicalState": "complete",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "plainTitle": "Add member form → a working login saved on the device",
   "outcome": "Completed on demo data: built, recorded finished in the task accounting of 31 October 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come.",
   "group": "area-mgmt",
   "groupName": "Management (owner · PM · lead)",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "id": "A15",
   "whose": "build",
   "part": "app",
   "cat": "The app: buttons & actions",
   "title": "Edit team member modal (name, role, password; email locked)",
   "status": "done",
   "ask": "",
   "askKind": "shown",
   "source": "Owner · Team & Access",
   "lands": "",
   "note": "",
   "needs": "",
   "link": "",
   "key": "A15",
   "mapVia": "own id",
   "status5": "completed",
   "status5Via": "canonical A15: state complete, waiting on none",
   "status5Word": "Completed",
   "canonicalId": "A15",
   "canonicalState": "complete",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "plainTitle": "Edit team member modal (name, role, password; email locked)",
   "outcome": "Completed on demo data: built, recorded finished in the task accounting of 31 October 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come.",
   "group": "area-mgmt",
   "groupName": "Management (owner · PM · lead)",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "id": "A16",
   "whose": "build",
   "part": "app",
   "cat": "The app: buttons & actions",
   "title": "Remove a member — their login stops working",
   "status": "done",
   "ask": "",
   "askKind": "shown",
   "source": "Owner · Team & Access",
   "lands": "",
   "note": "",
   "needs": "",
   "link": "",
   "key": "A16",
   "mapVia": "own id",
   "status5": "completed",
   "status5Via": "canonical A16: state complete, waiting on none",
   "status5Word": "Completed",
   "canonicalId": "A16",
   "canonicalState": "complete",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "plainTitle": "Remove a member — their login stops working",
   "outcome": "Completed on demo data: built, recorded finished in the task accounting of 31 October 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come.",
   "group": "area-mgmt",
   "groupName": "Management (owner · PM · lead)",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "id": "A17",
   "whose": "build",
   "part": "app",
   "cat": "The app: buttons & actions",
   "title": "Put a man on a crew → allowed, or Blocked with every missing ticket named and why (\"never filed\" or \"expired\")",
   "status": "done",
   "ask": "",
   "askKind": "shown",
   "source": "Owner, Site lead · Tickets & Certs / My Crew",
   "lands": "",
   "note": "",
   "needs": "",
   "link": "",
   "key": "A17",
   "mapVia": "own id",
   "status5": "completed",
   "status5Via": "canonical A17: state complete, waiting on none",
   "status5Word": "Completed",
   "canonicalId": "A17",
   "canonicalState": "complete",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "plainTitle": "Put a man on a crew → allowed, or Blocked with every missing ticket named and why…",
   "outcome": "Completed on demo data: built, recorded finished in the task accounting of 31 October 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come.",
   "group": "area-safe",
   "groupName": "Safety · Tickets · People",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "id": "A18",
   "whose": "build",
   "part": "app",
   "cat": "The app: buttons & actions",
   "title": "Show archive / Hide archive toggle",
   "status": "done",
   "ask": "",
   "askKind": "shown",
   "source": "Owner, Site lead · Tickets & Certs / My Crew",
   "lands": "",
   "note": "",
   "needs": "",
   "link": "",
   "key": "A18",
   "mapVia": "own id",
   "status5": "completed",
   "status5Via": "canonical A18: state complete, waiting on none",
   "status5Word": "Completed",
   "canonicalId": "A18",
   "canonicalState": "complete",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "plainTitle": "Show archive / Hide archive toggle",
   "outcome": "Completed on demo data: built, recorded finished in the task accounting of 31 October 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come.",
   "group": "area-safe",
   "groupName": "Safety · Tickets · People",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "id": "A19",
   "whose": "build",
   "part": "app",
   "cat": "The app: buttons & actions",
   "title": "See what the inspector sees → the scan page in a sheet, plus Open it as its own page ↗",
   "status": "done",
   "ask": "",
   "askKind": "shown",
   "source": "Owner, Site lead, Crew · Ticket pages",
   "lands": "",
   "note": "",
   "needs": "",
   "link": "",
   "key": "A19",
   "mapVia": "alias, same title",
   "mapEvidence": "V19·codex lists A19 as its alias under this row's own title — canonical accounting v2.4 (materials/canonical/2026-10-31_canonical-tasks.v2.4.json, generated 2026-10-31)",
   "status5": "completed",
   "status5Via": "canonical V19·codex: state complete, waiting on none",
   "status5Word": "Completed",
   "canonicalId": "V19·codex",
   "canonicalState": "complete",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "recorded accepted in the canonical accounting, no ruling line carries the id",
   "plainTitle": "See what the inspector sees → the scan page in a sheet, plus Open it as its own page ↗",
   "outcome": "Completed on demo data: built, recorded finished in the task accounting of 31 October 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come.",
   "group": "area-gear",
   "groupName": "Equipment / QR / Inventory",
   "alsoAreas": [
    "Safety · Tickets · People"
   ],
   "canonAliases": [
    "P40",
    "P41",
    "A56"
   ],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "id": "A20",
   "whose": "build",
   "part": "app",
   "cat": "The app: buttons & actions",
   "title": "Job modal — invoice #, PO #, quote date, demo date, then the money block gated per role (Owner: sell, total w/GST, cost, profit, margin, GST + a cost breakdown · Site lead: contract, actual cost, cost-vs-contract, assignee + his cost breakdown · Bookkeeper: invoice value, owed, GST, to-invoice). Crew and Estimator cannot open it at all (openJob returns early)",
   "status": "done",
   "ask": "",
   "askKind": "shown",
   "source": "Owner, Site lead, Bookkeeper · Any job row, any map pin, any Gantt bar",
   "lands": "",
   "note": "",
   "needs": "",
   "link": "",
   "key": "A20",
   "mapVia": "alias, same title",
   "mapEvidence": "R04 lists A20 as its alias under this row's own title — canonical accounting v2.4 (materials/canonical/2026-10-31_canonical-tasks.v2.4.json, generated 2026-10-31)",
   "status5": "completed",
   "status5Via": "canonical R04: state complete, waiting on none",
   "status5Word": "Completed",
   "canonicalId": "R04",
   "canonicalState": "complete",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "recorded accepted in the canonical accounting, no ruling line carries the id",
   "plainTitle": "Job modal — invoice #, PO #, quote date, demo date, then the money block gated per role…",
   "outcome": "Completed on demo data: built, recorded finished in the task accounting of 31 October 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come.",
   "group": "area-fin",
   "groupName": "Finance / QuickBooks",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "id": "A21",
   "whose": "build",
   "part": "app",
   "cat": "The app: buttons & actions",
   "title": "Job switcher — a dropdown of every job this login may see, ◀ / ▶ arrows, and an \"n / N\" counter; jumping re-projects, so it can never reach a job or a field the role is not allowed",
   "status": "done",
   "ask": "",
   "askKind": "shown",
   "source": "Owner, Site lead, Bookkeeper · Job modal",
   "lands": "",
   "note": "",
   "needs": "",
   "link": "",
   "key": "A21",
   "mapVia": "own id",
   "status5": "completed",
   "status5Via": "canonical A21: state complete, waiting on none",
   "status5Word": "Completed",
   "canonicalId": "A21",
   "canonicalState": "complete",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "plainTitle": "Job switcher — a dropdown of every job this login may see, ◀ / ▶ arrows, and an \"n / N\"…",
   "outcome": "Completed on demo data: built, recorded finished in the task accounting of 31 October 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come.",
   "group": "area-mgmt",
   "groupName": "Management (owner · PM · lead)",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "id": "A22",
   "whose": "build",
   "part": "app",
   "cat": "The app: buttons & actions",
   "title": "Project book section — scope, permits table with expiry pills, the tickets this job needs on top of its crew's, crew readiness (click a man for his file), waste and hauling",
   "status": "done",
   "ask": "",
   "askKind": "shown",
   "source": "Owner, Site lead · Job modal",
   "lands": "",
   "note": "",
   "needs": "",
   "link": "",
   "key": "A22",
   "mapVia": "own id",
   "status5": "completed",
   "status5Via": "canonical A22: state complete, waiting on none",
   "status5Word": "Completed",
   "canonicalId": "A22",
   "canonicalState": "complete",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "plainTitle": "Project book section — scope, permits table with expiry pills, the tickets this job…",
   "outcome": "Completed on demo data: built, recorded finished in the task accounting of 31 October 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come.",
   "group": "area-mgmt",
   "groupName": "Management (owner · PM · lead)",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "id": "A23",
   "whose": "build",
   "part": "app",
   "cat": "The app: buttons & actions",
   "title": "Job book tabs — Cost codes · Change orders · Photos · Documents · Closeout",
   "status": "done",
   "ask": "",
   "askKind": "shown",
   "source": "Owner, Site lead · Job modal",
   "lands": "",
   "note": "",
   "needs": "",
   "link": "",
   "key": "A23",
   "mapVia": "own id",
   "status5": "completed",
   "status5Via": "canonical A23: state complete, waiting on none",
   "status5Word": "Completed",
   "canonicalId": "A23",
   "canonicalState": "complete",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "plainTitle": "Job book tabs — Cost codes · Change orders · Photos · Documents · Closeout",
   "outcome": "Completed on demo data: built, recorded finished in the task accounting of 31 October 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come.",
   "group": "area-mgmt",
   "groupName": "Management (owner · PM · lead)",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "id": "A24",
   "whose": "build",
   "part": "app",
   "cat": "The app: buttons & actions",
   "title": "Budget, spent, a used bar, % and (owner only) variance, per code and in total",
   "status": "done",
   "ask": "",
   "askKind": "shown",
   "source": "Owner, Site lead · Job modal → Cost codes",
   "lands": "",
   "note": "",
   "needs": "",
   "link": "",
   "key": "A24",
   "mapVia": "alias",
   "mapEvidence": "F06 lists A24 as its alias (\"Budget, spent, a used bar,  percent and (owner only) variance, per code and in total\") — canonical accounting v2.4 (materials/canonical/2026-10-31_canonical-tasks.v2.4.json, generated 2026-10-31)",
   "status5": "completed",
   "status5Via": "canonical F06: state complete, waiting on none",
   "status5Word": "Completed",
   "canonicalId": "F06",
   "canonicalState": "complete",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "recorded accepted in the canonical accounting, no ruling line carries the id",
   "plainTitle": "Budget, spent, a used bar, % and (owner only) variance, per code and in total",
   "outcome": "Completed on demo data: built, recorded finished in the task accounting of 31 October 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come.",
   "group": "area-fin",
   "groupName": "Finance / QuickBooks",
   "alsoAreas": [
    "Management (owner · PM · lead)"
   ],
   "canonAliases": [
    "P26"
   ],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "id": "A25",
   "whose": "build",
   "part": "app",
   "cat": "The app: buttons & actions",
   "title": "New change order (what changed, fixed price or T&M, amount) → Save as draft",
   "status": "done",
   "ask": "",
   "askKind": "shown",
   "source": "Owner, Site lead · Job modal → Change orders",
   "lands": "",
   "note": "",
   "needs": "",
   "link": "",
   "key": "A25",
   "mapVia": "own id",
   "status5": "completed",
   "status5Via": "canonical A25: state complete, waiting on none",
   "status5Word": "Completed",
   "canonicalId": "A25",
   "canonicalState": "complete",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "plainTitle": "New change order (what changed, fixed price or T&M, amount) → Save as draft",
   "outcome": "Completed on demo data: built, recorded finished in the task accounting of 31 October 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come.",
   "group": "area-mgmt",
   "groupName": "Management (owner · PM · lead)",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "id": "A26",
   "whose": "build",
   "part": "app",
   "cat": "The app: buttons & actions",
   "title": "Mark sent to customer · Approve · Decline · Back to draft. Approving raises the revised contract on the owner's view. The code says it plainly: \"Sent to customer is a status, not a send\"",
   "status": "done",
   "ask": "",
   "askKind": "shown",
   "source": "Owner · Job modal → Change orders",
   "lands": "",
   "note": "nothing leaves the device",
   "needs": "",
   "link": "",
   "key": "A26",
   "mapVia": "own id",
   "status5": "completed",
   "status5Via": "canonical A26: state complete, waiting on none",
   "status5Word": "Completed",
   "canonicalId": "A26",
   "canonicalState": "complete",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "plainTitle": "Mark sent to customer · Approve · Decline · Back to draft. Approving raises the revised…",
   "outcome": "Completed on demo data: built, recorded finished in the task accounting of 31 October 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come.",
   "group": "area-mgmt",
   "groupName": "Management (owner · PM · lead)",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "id": "A27",
   "whose": "build",
   "part": "app",
   "cat": "The app: buttons & actions",
   "title": "T&M day form — date, men, hours each, materials at cost (owner only), materials used, equipment, note → Save day; rolls into the order's man-hours and, for the owner, its value",
   "status": "done",
   "ask": "",
   "askKind": "shown",
   "source": "Owner, Site lead · Job modal → Change orders",
   "lands": "",
   "note": "",
   "needs": "",
   "link": "",
   "key": "A27",
   "mapVia": "own id",
   "status5": "completed",
   "status5Via": "canonical A27: state complete, waiting on none",
   "status5Word": "Completed",
   "canonicalId": "A27",
   "canonicalState": "complete",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "plainTitle": "T&M day form — date, men, hours each, materials at cost (owner only), materials used…",
   "outcome": "Completed on demo data: built, recorded finished in the task accounting of 31 October 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come.",
   "group": "area-mgmt",
   "groupName": "Management (owner · PM · lead)",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "id": "A28",
   "whose": "build",
   "part": "app",
   "cat": "The app: buttons & actions",
   "title": "Take / choose photo — stage, caption, camera or file picker; resized to 960 px, kept on the device, capped at 24 added photos",
   "status": "done",
   "ask": "",
   "askKind": "shown",
   "source": "Owner, Site lead · Job modal → Photos, and Start Day",
   "lands": "",
   "note": "",
   "needs": "",
   "link": "",
   "key": "A28",
   "mapVia": "alias, same title",
   "mapEvidence": "F08 lists A28 as its alias under this row's own title — canonical accounting v2.4 (materials/canonical/2026-10-31_canonical-tasks.v2.4.json, generated 2026-10-31)",
   "status5": "completed",
   "status5Via": "canonical F08: state complete, waiting on none",
   "status5Word": "Completed",
   "canonicalId": "F08",
   "canonicalState": "complete",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "recorded accepted in the canonical accounting, no ruling line carries the id",
   "plainTitle": "Take / choose photo — stage, caption, camera or file picker; resized to 960 px, kept on…",
   "outcome": "Completed on demo data: built, recorded finished in the task accounting of 31 October 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come.",
   "group": "area-mgmt",
   "groupName": "Management (owner · PM · lead)",
   "canonAliases": [
    "A29",
    "A30"
   ],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "id": "A29",
   "whose": "build",
   "part": "app",
   "cat": "The app: buttons & actions",
   "title": "Open a photo full size, with ← Back to job",
   "status": "done",
   "ask": "",
   "askKind": "shown",
   "source": "Owner, Site lead · Anywhere a photo appears",
   "lands": "",
   "note": "",
   "needs": "",
   "link": "",
   "key": "A29",
   "mapVia": "alias, same title",
   "mapEvidence": "F08 lists A29 as its alias under this row's own title — canonical accounting v2.4 (materials/canonical/2026-10-31_canonical-tasks.v2.4.json, generated 2026-10-31)",
   "status5": "completed",
   "status5Via": "canonical F08: state complete, waiting on none",
   "status5Word": "Completed",
   "canonicalId": "F08",
   "canonicalState": "complete",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "recorded accepted in the canonical accounting, no ruling line carries the id",
   "plainTitle": "Open a photo full size, with ← Back to job",
   "outcome": "Completed on demo data: built, recorded finished in the task accounting of 31 October 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come.",
   "group": "area-mgmt",
   "groupName": "Management (owner · PM · lead)",
   "canonAliases": [
    "A28",
    "A30"
   ],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "id": "A30",
   "whose": "build",
   "part": "app",
   "cat": "The app: buttons & actions",
   "title": "Open a document — a placeholder page watermarked DEMO, with which jobs require it, and ← Back to job",
   "status": "done",
   "ask": "",
   "askKind": "shown",
   "source": "Owner, Site lead · Job modal → Documents, Safety page",
   "lands": "",
   "note": "placeholders only",
   "needs": "",
   "link": "",
   "key": "A30",
   "mapVia": "alias, same title",
   "mapEvidence": "F08 lists A30 as its alias under this row's own title — canonical accounting v2.4 (materials/canonical/2026-10-31_canonical-tasks.v2.4.json, generated 2026-10-31)",
   "status5": "completed",
   "status5Via": "canonical F08: state complete, waiting on none",
   "status5Word": "Completed",
   "canonicalId": "F08",
   "canonicalState": "complete",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "recorded accepted in the canonical accounting, no ruling line carries the id",
   "plainTitle": "Open a document — a placeholder page watermarked DEMO, with which jobs require it, and ←…",
   "outcome": "Completed on demo data: built, recorded finished in the task accounting of 31 October 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come.",
   "group": "area-mgmt",
   "groupName": "Management (owner · PM · lead)",
   "canonAliases": [
    "A28",
    "A29"
   ],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "id": "A31",
   "whose": "build",
   "part": "app",
   "cat": "The app: buttons & actions",
   "title": "Open the closeout report — scope, permits, tickets the job needed, waste and landfill tickets, hours on the job, change orders, cost codes (owner only), safety, documents, photos, three signature lines. Owner copy carries prices; the site copy is headed \"no prices\"",
   "status": "done",
   "ask": "",
   "askKind": "shown",
   "source": "Owner, Site lead · Job modal → Closeout",
   "lands": "",
   "note": "",
   "needs": "",
   "link": "",
   "key": "A31",
   "mapVia": "alias, same title",
   "mapEvidence": "V35·codex lists A31 as its alias under this row's own title — canonical accounting v2.4 (materials/canonical/2026-10-31_canonical-tasks.v2.4.json, generated 2026-10-31)",
   "status5": "completed",
   "status5Via": "canonical V35·codex: state complete, waiting on none",
   "status5Word": "Completed",
   "canonicalId": "V35·codex",
   "canonicalState": "complete",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "recorded accepted in the canonical accounting, no ruling line carries the id",
   "plainTitle": "Open the closeout report — scope, permits, tickets the job needed, waste and landfill…",
   "outcome": "Completed on demo data: built, recorded finished in the task accounting of 31 October 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come.",
   "group": "area-mgmt",
   "groupName": "Management (owner · PM · lead)",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "id": "A32",
   "whose": "build",
   "part": "app",
   "cat": "The app: buttons & actions",
   "title": "Print / Save as PDF (the browser's own) · ← Back to job",
   "status": "done",
   "ask": "",
   "askKind": "shown",
   "source": "Owner, Site lead · Closeout report",
   "lands": "",
   "note": "",
   "needs": "",
   "link": "",
   "key": "A32",
   "mapVia": "own id",
   "status5": "completed",
   "status5Via": "canonical A32: state complete, waiting on none",
   "status5Word": "Completed",
   "canonicalId": "A32",
   "canonicalState": "complete",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "plainTitle": "Print / Save as PDF (the browser's own) · ← Back to job",
   "outcome": "Completed on demo data: built, recorded finished in the task accounting of 31 October 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come.",
   "group": "area-mgmt",
   "groupName": "Management (owner · PM · lead)",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "id": "A33",
   "whose": "build",
   "part": "app",
   "cat": "The app: buttons & actions",
   "title": "Open a proposal → Print / Save as PDF; banded DRAFT PROPOSAL — DEMO DATA",
   "status": "done",
   "ask": "",
   "askKind": "shown",
   "source": "Owner, Estimator · Proposals",
   "lands": "",
   "note": "",
   "needs": "",
   "link": "",
   "key": "A33",
   "mapVia": "own id",
   "status5": "completed",
   "status5Via": "canonical A33: state complete, waiting on none",
   "status5Word": "Completed",
   "canonicalId": "A33",
   "canonicalState": "complete",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "plainTitle": "Open a proposal → Print / Save as PDF; banded DRAFT PROPOSAL — DEMO DATA",
   "outcome": "Completed on demo data: built, recorded finished in the task accounting of 31 October 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come.",
   "group": "area-sales",
   "groupName": "Sales / Estimating",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "id": "A34",
   "whose": "build",
   "part": "app",
   "cat": "The app: buttons & actions",
   "title": "Click a cell → pick a site or \"No work / off\" → Save",
   "status": "done",
   "ask": "",
   "askKind": "shown",
   "source": "Owner, Site lead · Schedule Board / Crew Board",
   "lands": "",
   "note": "",
   "needs": "",
   "link": "",
   "key": "A34",
   "mapVia": "own id",
   "status5": "completed",
   "status5Via": "canonical A34: state complete, waiting on none",
   "status5Word": "Completed",
   "canonicalId": "A34",
   "canonicalState": "complete",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "plainTitle": "Click a cell → pick a site or \"No work / off\" → Save",
   "outcome": "Completed on demo data: built, recorded finished in the task accounting of 31 October 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come.",
   "group": "area-mgmt",
   "groupName": "Management (owner · PM · lead)",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "id": "A35",
   "whose": "build",
   "part": "app",
   "cat": "The app: buttons & actions",
   "title": "Drag a day to another day or crew; swap when the target is occupied; tap-and-hold on a phone",
   "status": "done",
   "ask": "",
   "askKind": "shown",
   "source": "Owner, Site lead · Schedule Board / Crew Board",
   "lands": "",
   "note": "",
   "needs": "",
   "link": "",
   "key": "A35",
   "mapVia": "own id",
   "status5": "completed",
   "status5Via": "canonical A35: state complete, waiting on none",
   "status5Word": "Completed",
   "canonicalId": "A35",
   "canonicalState": "complete",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "plainTitle": "Drag a day to another day or crew; swap when the target is occupied; tap-and-hold on a…",
   "outcome": "Completed on demo data: built, recorded finished in the task accounting of 31 October 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come.",
   "group": "area-mgmt",
   "groupName": "Management (owner · PM · lead)",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "id": "A36",
   "whose": "build",
   "part": "app",
   "cat": "The app: buttons & actions",
   "title": "A drag that would break a ticket requirement is refused, and a modal shows the same block the crew page shows, one panel per man",
   "status": "done",
   "ask": "",
   "askKind": "shown",
   "source": "Owner, Site lead · Schedule Board / Crew Board",
   "lands": "",
   "note": "",
   "needs": "",
   "link": "",
   "key": "A36",
   "mapVia": "own id",
   "status5": "completed",
   "status5Via": "canonical A36: state complete, waiting on none",
   "status5Word": "Completed",
   "canonicalId": "A36",
   "canonicalState": "complete",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "plainTitle": "A drag that would break a ticket requirement is refused, and a modal shows the same…",
   "outcome": "Completed on demo data: built, recorded finished in the task accounting of 31 October 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come.",
   "group": "area-mgmt",
   "groupName": "Management (owner · PM · lead)",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "id": "A37",
   "whose": "build",
   "part": "app",
   "cat": "The app: buttons & actions",
   "title": "← Previous week · This week · Next week →",
   "status": "done",
   "ask": "",
   "askKind": "shown",
   "source": "Owner, Site lead · Schedule Board / Crew Board",
   "lands": "",
   "note": "",
   "needs": "",
   "link": "",
   "key": "A37",
   "mapVia": "own id",
   "status5": "completed",
   "status5Via": "canonical A37: state complete, waiting on none",
   "status5Word": "Completed",
   "canonicalId": "A37",
   "canonicalState": "complete",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "plainTitle": "← Previous week · This week · Next week →",
   "outcome": "Completed on demo data: built, recorded finished in the task accounting of 31 October 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come.",
   "group": "area-mgmt",
   "groupName": "Management (owner · PM · lead)",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "id": "A38",
   "whose": "build",
   "part": "app",
   "cat": "The app: buttons & actions",
   "title": "Text the week to the crew (in-app demo) — shows every man's message, sends nothing",
   "status": "done",
   "ask": "",
   "askKind": "shown",
   "source": "Owner, Site lead · Schedule Board / Crew Board",
   "lands": "",
   "note": "",
   "needs": "",
   "link": "",
   "key": "A38",
   "mapVia": "own id",
   "status5": "completed",
   "status5Via": "canonical A38: state complete, waiting on none",
   "status5Word": "Completed",
   "canonicalId": "A38",
   "canonicalState": "complete",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "plainTitle": "Text the week to the crew (in-app demo) — shows every man's message, sends nothing",
   "outcome": "Completed on demo data: built, recorded finished in the task accounting of 31 October 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come.",
   "group": "area-office",
   "groupName": "Office / Admin / Helpers",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "id": "A39",
   "whose": "build",
   "part": "app",
   "cat": "The app: buttons & actions",
   "title": "Start Day — one button that opens the timesheet, the safety talk and the notes",
   "status": "done",
   "ask": "",
   "askKind": "shown",
   "source": "Site lead · Start Day",
   "lands": "",
   "note": "",
   "needs": "",
   "link": "",
   "key": "A39",
   "mapVia": "own id",
   "status5": "completed",
   "status5Via": "canonical A39: state complete, waiting on none",
   "status5Word": "Completed",
   "canonicalId": "A39",
   "canonicalState": "complete",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "plainTitle": "Start Day — one button that opens the timesheet, the safety talk and the notes",
   "outcome": "Completed on demo data: built, recorded finished in the task accounting of 31 October 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come.",
   "group": "area-crew",
   "groupName": "Crew (the field day)",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "id": "A40",
   "whose": "build",
   "part": "app",
   "cat": "The app: buttons & actions",
   "title": "Change a man's hours (saved as you type, clamped 0–16)",
   "status": "done",
   "ask": "",
   "askKind": "shown",
   "source": "Site lead · Start Day",
   "lands": "",
   "note": "",
   "needs": "",
   "link": "",
   "key": "A40",
   "mapVia": "own id",
   "status5": "completed",
   "status5Via": "canonical A40: state complete, waiting on none",
   "status5Word": "Completed",
   "canonicalId": "A40",
   "canonicalState": "complete",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "plainTitle": "Change a man's hours (saved as you type, clamped 0–16)",
   "outcome": "Completed on demo data: built, recorded finished in the task accounting of 31 October 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come.",
   "group": "area-crew",
   "groupName": "Crew (the field day)",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "id": "A41",
   "whose": "build",
   "part": "app",
   "cat": "The app: buttons & actions",
   "title": "Safety-talk checklist — pick the topic from 6, tick all 6 items, Talk done — crew briefed (disabled until every item is ticked)",
   "status": "done",
   "ask": "",
   "askKind": "shown",
   "source": "Site lead · Start Day",
   "lands": "",
   "note": "",
   "needs": "",
   "link": "",
   "key": "A41",
   "mapVia": "own id",
   "status5": "completed",
   "status5Via": "canonical A41: state complete, waiting on none",
   "status5Word": "Completed",
   "canonicalId": "A41",
   "canonicalState": "complete",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "plainTitle": "Safety-talk checklist — pick the topic from 6, tick all 6 items, Talk done — crew…",
   "outcome": "Completed on demo data: built, recorded finished in the task accounting of 31 October 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come.",
   "group": "area-crew",
   "groupName": "Crew (the field day)",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "id": "A42",
   "whose": "build",
   "part": "app",
   "cat": "The app: buttons & actions",
   "title": "Talk — browser speech-to-text in 6 languages, interim results into the box, then Add note",
   "status": "done",
   "ask": "",
   "askKind": "shown",
   "source": "Site lead · Start Day",
   "lands": "",
   "note": "the browser's own recogniser; nothing is uploaded",
   "needs": "",
   "link": "",
   "key": "A42",
   "mapVia": "own id",
   "status5": "completed",
   "status5Via": "canonical A42: state complete, waiting on none",
   "status5Word": "Completed",
   "canonicalId": "A42",
   "canonicalState": "complete",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "plainTitle": "Talk — browser speech-to-text in 6 languages, interim results into the box, then Add note",
   "outcome": "Completed on demo data: built, recorded finished in the task accounting of 31 October 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come.",
   "group": "area-crew",
   "groupName": "Crew (the field day)",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "id": "A43",
   "whose": "build",
   "part": "app",
   "cat": "The app: buttons & actions",
   "title": "Send end-of-day check to the crew (in-app) — disabled until the talk is closed",
   "status": "done",
   "ask": "",
   "askKind": "shown",
   "source": "Site lead · Start Day",
   "lands": "",
   "note": "appears on each man's End of Day tab; nothing is texted",
   "needs": "",
   "link": "",
   "key": "A43",
   "mapVia": "own id",
   "status5": "completed",
   "status5Via": "canonical A43: state complete, waiting on none",
   "status5Word": "Completed",
   "canonicalId": "A43",
   "canonicalState": "complete",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "plainTitle": "Send end-of-day check to the crew (in-app) — disabled until the talk is closed",
   "outcome": "Completed on demo data: built, recorded finished in the task accounting of 31 October 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come.",
   "group": "area-office",
   "groupName": "Office / Admin / Helpers",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "id": "A44",
   "whose": "build",
   "part": "app",
   "cat": "The app: buttons & actions",
   "title": "Reset today's daily (demo)",
   "status": "done",
   "ask": "",
   "askKind": "shown",
   "source": "Site lead · Start Day",
   "lands": "",
   "note": "",
   "needs": "",
   "link": "",
   "key": "A44",
   "mapVia": "own id",
   "status5": "completed",
   "status5Via": "canonical A44: state complete, waiting on none",
   "status5Word": "Completed",
   "canonicalId": "A44",
   "canonicalState": "complete",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "plainTitle": "Reset today's daily (demo)",
   "outcome": "Completed on demo data: built, recorded finished in the task accounting of 31 October 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come.",
   "group": "area-crew",
   "groupName": "Crew (the field day)",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "id": "A45",
   "whose": "build",
   "part": "app",
   "cat": "The app: buttons & actions",
   "title": "Yes, I attended / No, I did not + My hours are wrong",
   "status": "done",
   "ask": "",
   "askKind": "shown",
   "source": "Crew · End of Day",
   "lands": "",
   "note": "",
   "needs": "",
   "link": "",
   "key": "A45",
   "mapVia": "own id",
   "status5": "completed",
   "status5Via": "canonical A45: state complete, waiting on none",
   "status5Word": "Completed",
   "canonicalId": "A45",
   "canonicalState": "complete",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "plainTitle": "Yes, I attended / No, I did not + My hours are wrong",
   "outcome": "Completed on demo data: built, recorded finished in the task accounting of 31 October 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come.",
   "group": "area-crew",
   "groupName": "Crew (the field day)",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "id": "A46",
   "whose": "build",
   "part": "app",
   "cat": "The app: buttons & actions",
   "title": "File it — report an incident, with an optional corrective action, owner and due date",
   "status": "done",
   "ask": "",
   "askKind": "shown",
   "source": "Owner, Site lead · Safety",
   "lands": "",
   "note": "",
   "needs": "",
   "link": "",
   "key": "A46",
   "mapVia": "own id",
   "status5": "completed",
   "status5Via": "canonical A46: state complete, waiting on none",
   "status5Word": "Completed",
   "canonicalId": "A46",
   "canonicalState": "complete",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "plainTitle": "File it — report an incident, with an optional corrective action, owner and due date",
   "outcome": "Completed on demo data: built, recorded finished in the task accounting of 31 October 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come.",
   "group": "area-safe",
   "groupName": "Safety · Tickets · People",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "id": "A47",
   "whose": "build",
   "part": "app",
   "cat": "The app: buttons & actions",
   "title": "Log it — log an inspection (site, kind, pass or deficiencies, notes)",
   "status": "done",
   "ask": "",
   "askKind": "shown",
   "source": "Owner, Site lead · Safety",
   "lands": "",
   "note": "",
   "needs": "",
   "link": "",
   "key": "A47",
   "mapVia": "own id",
   "status5": "completed",
   "status5Via": "canonical A47: state complete, waiting on none",
   "status5Word": "Completed",
   "canonicalId": "A47",
   "canonicalState": "complete",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "plainTitle": "Log it — log an inspection (site, kind, pass or deficiencies, notes)",
   "outcome": "Completed on demo data: built, recorded finished in the task accounting of 31 October 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come.",
   "group": "area-safe",
   "groupName": "Safety · Tickets · People",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "id": "A48",
   "whose": "build",
   "part": "app",
   "cat": "The app: buttons & actions",
   "title": "Close / Reopen a corrective action; it stays on file either way",
   "status": "done",
   "ask": "",
   "askKind": "shown",
   "source": "Owner, Site lead · Safety",
   "lands": "",
   "note": "",
   "needs": "",
   "link": "",
   "key": "A48",
   "mapVia": "own id",
   "status5": "completed",
   "status5Via": "canonical A48: state complete, waiting on none",
   "status5Word": "Completed",
   "canonicalId": "A48",
   "canonicalState": "complete",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "plainTitle": "Close / Reopen a corrective action; it stays on file either way",
   "outcome": "Completed on demo data: built, recorded finished in the task accounting of 31 October 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come.",
   "group": "area-safe",
   "groupName": "Safety · Tickets · People",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "id": "A49",
   "whose": "build",
   "part": "app",
   "cat": "The app: buttons & actions",
   "title": "Open an asset → its record and its QR code → See the scan page",
   "status": "done",
   "ask": "",
   "askKind": "shown",
   "source": "Owner, Site lead · Equipment",
   "lands": "",
   "note": "",
   "needs": "",
   "link": "",
   "key": "A49",
   "mapVia": "own id",
   "status5": "completed",
   "status5Via": "canonical A49: state complete, waiting on none",
   "status5Word": "Completed",
   "canonicalId": "A49",
   "canonicalState": "complete",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "plainTitle": "Open an asset → its record and its QR code → See the scan page",
   "outcome": "Completed on demo data: built, recorded finished in the task accounting of 31 October 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come.",
   "group": "area-gear",
   "groupName": "Equipment / QR / Inventory",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "id": "A50",
   "whose": "build",
   "part": "app",
   "cat": "The app: buttons & actions",
   "title": "Export CSV — a file headed \"DEMO DATA\"; the owner's carries rates and pay, the bookkeeper's carries hours only",
   "status": "done",
   "ask": "",
   "askKind": "shown",
   "source": "Owner, Bookkeeper · Payroll",
   "lands": "",
   "note": "",
   "needs": "",
   "link": "",
   "key": "A50",
   "mapVia": "own id",
   "status5": "completed",
   "status5Via": "canonical A50: state complete, waiting on none",
   "status5Word": "Completed",
   "canonicalId": "A50",
   "canonicalState": "complete",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "plainTitle": "Export CSV — a file headed \"DEMO DATA\"; the owner's carries rates and pay, the…",
   "outcome": "Completed on demo data: built, recorded finished in the task accounting of 31 October 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come.",
   "group": "area-fin",
   "groupName": "Finance / QuickBooks",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "id": "A51",
   "whose": "build",
   "part": "app",
   "cat": "The app: buttons & actions",
   "title": "Approve this week — records who and when, then shows the stamp instead of the button",
   "status": "done",
   "ask": "",
   "askKind": "shown",
   "source": "Owner · Payroll",
   "lands": "",
   "note": "one approver, no chain",
   "needs": "",
   "link": "",
   "key": "A51",
   "mapVia": "own id",
   "status5": "completed",
   "status5Via": "canonical A51: state complete, waiting on none",
   "status5Word": "Completed",
   "canonicalId": "A51",
   "canonicalState": "complete",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "plainTitle": "Approve this week — records who and when, then shows the stamp instead of the button",
   "outcome": "Completed on demo data: built, recorded finished in the task accounting of 31 October 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come.",
   "group": "area-fin",
   "groupName": "Finance / QuickBooks",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "id": "A52",
   "whose": "build",
   "part": "app",
   "cat": "The app: buttons & actions",
   "title": "← Previous week · This week · Next week →",
   "status": "done",
   "ask": "",
   "askKind": "shown",
   "source": "Owner, Bookkeeper · Payroll",
   "lands": "",
   "note": "",
   "needs": "",
   "link": "",
   "key": "A52",
   "mapVia": "own id",
   "status5": "completed",
   "status5Via": "canonical A52: state complete, waiting on none",
   "status5Word": "Completed",
   "canonicalId": "A52",
   "canonicalState": "complete",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "plainTitle": "← Previous week · This week · Next week →",
   "outcome": "Completed on demo data: built, recorded finished in the task accounting of 31 October 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come.",
   "group": "area-fin",
   "groupName": "Finance / QuickBooks",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "id": "A53",
   "whose": "build",
   "part": "app",
   "cat": "The app: buttons & actions",
   "title": "Connect QuickBooks Online — explains what it needs; connects nothing",
   "status": "open",
   "ask": "",
   "askKind": "shown",
   "source": "Owner · QuickBooks",
   "lands": "",
   "note": "",
   "needs": "Waits on Owner: fifteen minutes on QuickBooks Online",
   "link": "ali-quickbooks",
   "key": "A53",
   "mapVia": "own id",
   "status5": "needs-ali",
   "status5Via": "canonical A53: state blocked, waiting on the owner",
   "status5Word": "Needs Ali",
   "canonicalId": "A53",
   "canonicalState": "blocked",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "necessity": "needed-for-launch",
   "necessitySource": "plan v0.2 (materials/handoff/2026-10-31_0102_audit-v2.4/DRAFT_MAKKI_PROJECT_PLAN_2026-10-31_v0.2.md, generated 2026-10-31): card fin-qbo \"QuickBooks Online connection, first import and The Books\" on finish line 2",
   "necessityVia": "the canonical row A53's tag (tracker.json, reconciled over all 566 live rows)",
   "necessityWord": "Needed for launch",
   "plainTitle": "Connect QuickBooks Online — explains what it needs; connects nothing",
   "outcome": "Needs Ali: not started — it waits on the owner.",
   "next": "Waits on Owner: fifteen minutes on QuickBooks Online",
   "group": "area-fin",
   "groupName": "Finance / QuickBooks",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "not-live",
   "liveWord": "not on the live build"
  },
  {
   "id": "A54",
   "whose": "build",
   "part": "app",
   "cat": "The app: buttons & actions",
   "title": "Click a status chip to hide or show those pins; the count updates",
   "status": "done",
   "ask": "",
   "askKind": "shown",
   "source": "Owner, Bookkeeper, Site lead, Crew · Dashboard map",
   "lands": "",
   "note": "",
   "needs": "",
   "link": "",
   "key": "A54",
   "mapVia": "own id",
   "status5": "completed",
   "status5Via": "canonical A54: state complete, waiting on none",
   "status5Word": "Completed",
   "canonicalId": "A54",
   "canonicalState": "complete",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "plainTitle": "Click a status chip to hide or show those pins; the count updates",
   "outcome": "Completed on demo data: built, recorded finished in the task accounting of 31 October 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come.",
   "group": "area-mgmt",
   "groupName": "Management (owner · PM · lead)",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "id": "A55",
   "whose": "build",
   "part": "app",
   "cat": "The app: buttons & actions",
   "title": "Click a pin to open that job. The Crew map is deliberately drill-free",
   "status": "done",
   "ask": "",
   "askKind": "shown",
   "source": "Owner, Bookkeeper, Site lead · Dashboard map",
   "lands": "",
   "note": "",
   "needs": "",
   "link": "",
   "key": "A55",
   "mapVia": "own id",
   "status5": "completed",
   "status5Via": "canonical A55: state complete, waiting on none",
   "status5Word": "Completed",
   "canonicalId": "A55",
   "canonicalState": "complete",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "plainTitle": "Click a pin to open that job. The Crew map is deliberately drill-free",
   "outcome": "Completed on demo data: built, recorded finished in the task accounting of 31 October 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come.",
   "group": "area-mgmt",
   "groupName": "Management (owner · PM · lead)",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "id": "A56",
   "whose": "build",
   "part": "app",
   "cat": "The app: buttons & actions",
   "title": "Scan the QR → page 41. Drawn on the device, so it works with no signal",
   "status": "done",
   "ask": "",
   "askKind": "shown",
   "source": "No login · A hard hat",
   "lands": "",
   "note": "",
   "needs": "",
   "link": "",
   "key": "A56",
   "mapVia": "alias, same title",
   "mapEvidence": "V19·codex lists A56 as its alias under this row's own title — canonical accounting v2.4 (materials/canonical/2026-10-31_canonical-tasks.v2.4.json, generated 2026-10-31)",
   "status5": "completed",
   "status5Via": "canonical V19·codex: state complete, waiting on none",
   "status5Word": "Completed",
   "canonicalId": "V19·codex",
   "canonicalState": "complete",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "recorded accepted in the canonical accounting, no ruling line carries the id",
   "plainTitle": "Scan the QR → page 41. Drawn on the device, so it works with no signal",
   "outcome": "Completed on demo data: built, recorded finished in the task accounting of 31 October 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come.",
   "group": "area-gear",
   "groupName": "Equipment / QR / Inventory",
   "alsoAreas": [
    "Safety · Tickets · People"
   ],
   "canonAliases": [
    "P40",
    "P41",
    "A19"
   ],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "id": "A57",
   "whose": "build",
   "part": "app",
   "cat": "The app: buttons & actions",
   "title": "Scan the QR → page 42",
   "status": "done",
   "ask": "",
   "askKind": "shown",
   "source": "No login · A machine",
   "lands": "",
   "note": "",
   "needs": "",
   "link": "",
   "key": "A57",
   "mapVia": "alias, same title",
   "mapEvidence": "P42 lists A57 as its alias under this row's own title — canonical accounting v2.4 (materials/canonical/2026-10-31_canonical-tasks.v2.4.json, generated 2026-10-31)",
   "status5": "completed",
   "status5Via": "canonical P42: state complete, waiting on none",
   "status5Word": "Completed",
   "canonicalId": "P42",
   "canonicalState": "complete",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "plainTitle": "Scan the QR → page 42",
   "outcome": "Completed on demo data: built, recorded finished in the task accounting of 31 October 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come.",
   "group": "area-gear",
   "groupName": "Equipment / QR / Inventory",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "id": "A58",
   "whose": "build",
   "part": "app",
   "cat": "The app: buttons & actions",
   "title": "The DEMO band under the header — it cannot scroll away or be dismissed, and render() never wipes it",
   "status": "done",
   "ask": "",
   "askKind": "shown",
   "source": "everyone · Every screen",
   "lands": "",
   "note": "",
   "needs": "",
   "link": "",
   "key": "A58",
   "mapVia": "own id",
   "status5": "completed",
   "status5Via": "canonical A58: state complete, waiting on none",
   "status5Word": "Completed",
   "canonicalId": "A58",
   "canonicalState": "complete",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "plainTitle": "The DEMO band under the header — it cannot scroll away or be dismissed, and render never…",
   "outcome": "Completed on demo data: built, recorded finished in the task accounting of 31 October 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come.",
   "group": "area-fin",
   "groupName": "Finance / QuickBooks",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "id": "A59",
   "whose": "build",
   "part": "app",
   "cat": "The app: buttons & actions",
   "title": "Install as an app (PWA) — full screen, works offline, updates itself; a service worker reloads once when a new build takes over",
   "status": "done",
   "ask": "",
   "askKind": "shown",
   "source": "everyone · The whole app",
   "lands": "",
   "note": "",
   "needs": "",
   "link": "",
   "key": "A59",
   "mapVia": "own id",
   "status5": "completed",
   "status5Via": "canonical A59: state complete, waiting on none",
   "status5Word": "Completed",
   "canonicalId": "A59",
   "canonicalState": "complete",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "plainTitle": "Install as an app (PWA) — full screen, works offline, updates itself; a service worker…",
   "outcome": "Completed on demo data: built, recorded finished in the task accounting of 31 October 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come.",
   "group": "area-plat",
   "groupName": "Platform / Hosting / Launch",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "id": "A60",
   "whose": "build",
   "part": "app",
   "cat": "The text line (helpers)",
   "title": "Ask it a number by text, get the answer off the data",
   "status": "open",
   "ask": "",
   "askKind": "shown",
   "source": "Owner · node tools/ask.cjs <command> — outstanding, jobs [status], job <address-or-id>, quotes [won|lost] [by <estimator>], crew <A|B|C>, tickets [man], inventory; --as book/est/lead/crew for a role view",
   "lands": "",
   "note": "",
   "needs": "The number questions the text line must answer off the data: money outstanding, a job by address, quotes by estimator, a crew, tickets and the inventory.",
   "link": "",
   "titleSource": "profile/Master_List_2026-09-16.md line 219 — the A60 row, whose table cell escapes its pipes as \\|; the title is that row's own cell, read on 2026-11-07 (the canonical accounting v2.4 of 2026-10-31 carried the cell split at every pipe and flagged it malformed-title)",
   "statusAsRecorded": "open",
   "statusVia": "the master list marks this row built and the canonical accounting of 31 October 2026 holds it not started; the two were printed side by side as the current reading. The accounting is the current state — nothing in the app answers a number by text today — and the master-list reading is kept beside the row as the state it carried when the 31 October accounting was cut. Source: the canonical accounting v2.4 of 2026-10-31 (materials/canonical/2026-10-31_canonical-tasks.v2.4.json) records A60 open with no evidence; profile/Master_List_2026-09-16.md carries the built reading, read 2026-11-08.",
   "needsBefore": "",
   "key": "A60",
   "mapVia": "own id",
   "status5": "not-done",
   "status5Via": "canonical A60: state open, waiting on none",
   "status5Word": "Not done",
   "canonicalId": "A60",
   "canonicalState": "open",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "necessity": "needed-for-demo",
   "necessitySource": "plan v0.2 (materials/handoff/2026-10-31_0102_audit-v2.4/DRAFT_MAKKI_PROJECT_PLAN_2026-10-31_v0.2.md, generated 2026-10-31): card office-seats \"The helper agents and their schedules\" on finish line 1",
   "necessityVia": "the canonical row A60's tag (tracker.json, reconciled over all 566 live rows)",
   "necessityWord": "Needed for the demo",
   "plainTitle": "Ask it a number by text, get the answer off the data",
   "outcome": "Not done: not started.",
   "next": "The number questions the text line must answer off the data: money outstanding, a job by address, quotes by estimator, a crew, tickets and the inventory.",
   "group": "area-office",
   "groupName": "Office / Admin / Helpers",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "not-live",
   "liveWord": "not on the live build"
  },
  {
   "id": "A61",
   "whose": "build",
   "part": "app",
   "cat": "The text line (helpers)",
   "title": "Nightly: what is not invoiced, what is overdue by age, holdbacks. Writes invoice drafts to outbox/invoices/ under a DRAFT header. The owner sends invoices, not the app",
   "status": "done",
   "ask": "",
   "askKind": "shown",
   "source": "Owner · node tools/collector.cjs",
   "lands": "",
   "note": "",
   "needs": "",
   "link": "",
   "key": "A61",
   "mapVia": "alias",
   "mapEvidence": "H2 lists A61 as its alias (\"Nightly: what is not invoiced, what is overdue by age, holdbacks. Writes invoice drafts to outbox/invoices/ under a DRAFT header. The owner sends invoices, not the app\") — canonical accounting v2.4 (materials/canonical/2026-10-31_canonical-tasks.v2.4.json, generated 2026-10-31)",
   "status5": "completed",
   "status5Via": "canonical H2: state complete, waiting on none",
   "status5Word": "Completed",
   "canonicalId": "H2",
   "canonicalState": "complete",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "plainTitle": "Nightly: what is not invoiced, what is overdue by age, holdbacks. Writes invoice drafts…",
   "outcome": "Completed on demo data: built, recorded finished in the task accounting of 31 October 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come.",
   "group": "area-office",
   "groupName": "Office / Admin / Helpers",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "id": "A62",
   "whose": "build",
   "part": "app",
   "cat": "The text line (helpers)",
   "title": "Turns a foreman's end-of-day words (typed or transcribed) into a filed daily and a 5-line confirmation",
   "status": "done",
   "ask": "",
   "askKind": "shown",
   "source": "Site lead → Owner · node tools/daily.cjs --text \"…\" --from \"…\"",
   "lands": "",
   "note": "",
   "needs": "",
   "link": "",
   "key": "A62",
   "mapVia": "alias, same title",
   "mapEvidence": "H3 lists A62 as its alias under this row's own title — canonical accounting v2.4 (materials/canonical/2026-10-31_canonical-tasks.v2.4.json, generated 2026-10-31)",
   "status5": "completed",
   "status5Via": "canonical H3: state complete, waiting on none",
   "status5Word": "Completed",
   "canonicalId": "H3",
   "canonicalState": "complete",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "plainTitle": "Turns a foreman's end-of-day words (typed or transcribed) into a filed daily and a…",
   "outcome": "Completed on demo data: built, recorded finished in the task accounting of 31 October 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come.",
   "group": "area-office",
   "groupName": "Office / Admin / Helpers",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "id": "A63",
   "whose": "build",
   "part": "app",
   "cat": "The text line (helpers)",
   "title": "Weekly: expiring tickets, expiries, and who cannot be booked on a crew",
   "status": "done",
   "ask": "",
   "askKind": "shown",
   "source": "Owner · node tools/tickets.cjs",
   "lands": "",
   "note": "",
   "needs": "",
   "link": "",
   "key": "A63",
   "mapVia": "alias, same title",
   "mapEvidence": "H4 lists A63 as its alias under this row's own title — canonical accounting v2.4 (materials/canonical/2026-10-31_canonical-tasks.v2.4.json, generated 2026-10-31)",
   "status5": "completed",
   "status5Via": "canonical H4: state complete, waiting on none",
   "status5Word": "Completed",
   "canonicalId": "H4",
   "canonicalState": "complete",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "plainTitle": "Weekly: expiring tickets, expiries, and who cannot be booked on a crew",
   "outcome": "Completed on demo data: built, recorded finished in the task accounting of 31 October 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come.",
   "group": "area-office",
   "groupName": "Office / Admin / Helpers",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "id": "H1",
   "whose": "build",
   "part": "agents",
   "cat": "Helper agents",
   "title": "The Assistant — Exact answers from the business data, texted in plain English",
   "status": "done",
   "ask": "",
   "askKind": "shown",
   "source": "BUILD_PLAN §3",
   "lands": "",
   "note": "Built",
   "needs": "",
   "link": "",
   "key": "H1",
   "mapVia": "own id",
   "status5": "completed",
   "status5Via": "canonical H1: state complete, waiting on none",
   "status5Word": "Completed",
   "canonicalId": "H1",
   "canonicalState": "complete",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "plainTitle": "The Assistant — Exact answers from the business data, texted in plain English",
   "outcome": "Completed on demo data: built, recorded finished in the task accounting of 31 October 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come.",
   "group": "area-office",
   "groupName": "Office / Admin / Helpers",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "id": "H2",
   "whose": "build",
   "part": "agents",
   "cat": "Helper agents",
   "title": "The Collector — Nightly: finished-not-invoiced, overdue by age, holdbacks; drafts invoices, never sends",
   "status": "done",
   "ask": "",
   "askKind": "shown",
   "source": "BUILD_PLAN §3",
   "lands": "",
   "note": "Built; scheduled 2026-10-03, job 2cc5e203, 5 a.m. Calgary daily",
   "needs": "",
   "link": "",
   "key": "H2",
   "mapVia": "own id",
   "status5": "completed",
   "status5Via": "canonical H2: state complete, waiting on none",
   "status5Word": "Completed",
   "canonicalId": "H2",
   "canonicalState": "complete",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "plainTitle": "The Collector — Nightly: finished-not-invoiced, overdue by age, holdbacks; drafts…",
   "outcome": "Completed on demo data: built 3 October 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come.",
   "group": "area-office",
   "groupName": "Office / Admin / Helpers",
   "canonAliases": [
    "A61"
   ],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "id": "H3",
   "whose": "build",
   "part": "agents",
   "cat": "Helper agents",
   "title": "The Foreman's Voice — A foreman's voice note becomes a filed daily report",
   "status": "done",
   "ask": "",
   "askKind": "shown",
   "source": "BUILD_PLAN §3",
   "lands": "",
   "note": "Built",
   "needs": "",
   "link": "",
   "key": "H3",
   "mapVia": "own id",
   "status5": "completed",
   "status5Via": "canonical H3: state complete, waiting on none",
   "status5Word": "Completed",
   "canonicalId": "H3",
   "canonicalState": "complete",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "plainTitle": "The Foreman's Voice — A foreman's voice note becomes a filed daily report",
   "outcome": "Completed on demo data: built, recorded finished in the task accounting of 31 October 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come.",
   "group": "area-office",
   "groupName": "Office / Admin / Helpers",
   "canonAliases": [
    "A62"
   ],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "id": "H4",
   "whose": "build",
   "part": "agents",
   "cat": "Helper agents",
   "title": "The Ticket Keeper — Expiring tickets, who is un-bookable, hard-hat codes — and, since the merge, the OHS and asbestos paperwork tied to the right site",
   "status": "done",
   "ask": "",
   "askKind": "shown",
   "source": "BUILD_PLAN §3",
   "lands": "",
   "note": "Built; scheduled 2026-10-03, job e7259a56, Monday 5 a.m. Calgary. Safety half not started",
   "needs": "",
   "link": "",
   "completedPortion": "the weekly tickets half: expiring tickets, who cannot be booked, hard-hat codes",
   "remainderId": "H4-rest",
   "key": "H4",
   "mapVia": "own id",
   "status5": "completed",
   "status5Via": "canonical H4: state complete, waiting on none",
   "status5Word": "Completed",
   "canonicalId": "H4",
   "coveredBy": {
    "gl": "H4",
    "extent": "partly",
    "source": "BUILD_PLAN.md §3 row 4 (The Ticket Keeper): \"Built; scheduled 2026-10-03, job e7259a56, Monday 5 a.m. Calgary. Safety half not started\"; no grade file names H4 in the canonical accounting v2.4 (2026-10-31)",
    "uncovered": "the safety half — the OHS and asbestos paperwork tied to the right site — is not started",
    "why": "the bundled Completed covers the ticket keeper — expiring tickets, who is un-bookable, hard-hat codes — and not the safety half",
    "glState": "complete",
    "glTitle": "The Ticket Keeper — Expiring tickets, who is un-bookable, hard-hat codes — and, since the merge, the OHS and asbestos paperwork tied to the right site",
    "gradeFile": null,
    "accepted": false
   },
   "canonicalState": "complete",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "plainTitle": "The Ticket Keeper — Expiring tickets, who is un-bookable, hard-hat codes —, since the…",
   "outcome": "Completed on demo data: the weekly tickets half: expiring tickets, who cannot be booked, hard-hat codes; the rest is its own row.",
   "next": "Nothing further here: the rest sits on its own row, H4-rest.",
   "group": "area-office",
   "groupName": "Office / Admin / Helpers",
   "canonAliases": [
    "A63"
   ],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "id": "H5",
   "whose": "build",
   "part": "agents",
   "cat": "Helper agents",
   "title": "The Estimator — Quotes in the owner's voice with his pricing rules; won → live job",
   "status": "open",
   "ask": "",
   "askKind": "shown",
   "source": "BUILD_PLAN §3",
   "lands": "",
   "note": "Not started",
   "needs": "Waits on Owner: the owner's past quotes / the assistant he trained (ask 2)",
   "link": "",
   "key": "H5",
   "mapVia": "alias",
   "mapEvidence": "GL-057 lists H5 as its alias (\"The Estimator — Quotes in the owner's voice with his pricing rules; won → live job\") — canonical accounting v2.4 (materials/canonical/2026-10-31_canonical-tasks.v2.4.json, generated 2026-10-31)",
   "status5": "needs-ali",
   "status5Via": "canonical GL-057: state blocked, waiting on the owner",
   "status5Word": "Needs Ali",
   "canonicalId": "GL-057",
   "canonicalState": "blocked",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "necessity": "needed-for-demo",
   "necessitySource": "plan v0.2 (materials/handoff/2026-10-31_0102_audit-v2.4/DRAFT_MAKKI_PROJECT_PLAN_2026-10-31_v0.2.md, generated 2026-10-31): card sales-est \"Estimating knowledge, reviewed AI estimates and the Estimator seat\" on finish line 1",
   "necessityVia": "the canonical row GL-057's tag (tracker.json, reconciled over all 566 live rows)",
   "necessityWord": "Needed for the demo",
   "plainTitle": "The Estimator — Quotes in the owner's voice with his pricing rules; won → live job",
   "outcome": "Needs Ali: not started — it waits on the owner.",
   "next": "Waits on Owner: the owner's past quotes / the assistant he trained (ask 2)",
   "group": "area-sales",
   "groupName": "Sales / Estimating",
   "alsoAreas": [
    "Office / Admin / Helpers"
   ],
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "not-live",
   "liveWord": "not on the live build"
  },
  {
   "id": "H6",
   "whose": "build",
   "part": "agents",
   "cat": "Helper agents",
   "title": "The Books — Payroll hours onto the right job, budget vs actual live; pulls invoices and costs from QuickBooks nightly; logs materials from a driver's text",
   "status": "open",
   "ask": "",
   "askKind": "shown",
   "source": "BUILD_PLAN §3",
   "lands": "",
   "note": "Not started",
   "needs": "Waits on Owner: Which payroll system (ask 3) and the QuickBooks \"Allow\" click (ask 5)",
   "link": "",
   "key": "H6",
   "mapVia": "alias, same title",
   "mapEvidence": "GL-058 lists H6 as its alias under this row's own title — canonical accounting v2.4 (materials/canonical/2026-10-31_canonical-tasks.v2.4.json, generated 2026-10-31)",
   "status5": "needs-ali",
   "status5Via": "canonical GL-058: state blocked, waiting on the owner",
   "status5Word": "Needs Ali",
   "canonicalId": "GL-058",
   "canonicalState": "blocked",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "necessity": "needed-for-launch",
   "necessitySource": "plan v0.2 (materials/handoff/2026-10-31_0102_audit-v2.4/DRAFT_MAKKI_PROJECT_PLAN_2026-10-31_v0.2.md, generated 2026-10-31): card fin-qbo \"QuickBooks Online connection, first import and The Books\" on finish line 2",
   "necessityVia": "the canonical row GL-058's tag (tracker.json, reconciled over all 566 live rows)",
   "necessityWord": "Needed for launch",
   "plainTitle": "The Books — Payroll hours onto the right job, budget vs actual live; pulls invoices and…",
   "outcome": "Needs Ali: not started — it waits on the owner.",
   "next": "Waits on Owner: Which payroll system (ask 3) and the QuickBooks \"Allow\" click (ask 5)",
   "group": "area-fin",
   "groupName": "Finance / QuickBooks",
   "alsoAreas": [
    "Equipment / QR / Inventory",
    "Office / Admin / Helpers"
   ],
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "not-live",
   "liveWord": "not on the live build"
  },
  {
   "id": "H7",
   "whose": "build",
   "part": "agents",
   "cat": "Helper agents",
   "title": "The Eye — Black + gold, the 7-tab nav, phone layout, the deck. Shoots the live URL, looks at the pixels, judges before a human has to",
   "status": "done",
   "ask": "",
   "askKind": "shown",
   "source": "BUILD_PLAN §3",
   "lands": "",
   "note": "Built 2026-09-21 (hive/THE_EYE.md, tools/eye.cjs)",
   "needs": "",
   "link": "",
   "statusAsRecorded": "open",
   "statusVia": "read from this row's own build-state cell in BUILD_PLAN §3, cleaned: \"Built 2026-09-21 (hive/THE_EYE.md, tools/eye.cjs)\". The superseded 31 October accounting read the raw cell, whose bold markers hid the word, and recorded Not built; that recorded state is kept here and is what the frozen build card still counts (tasks-correction v1.0.0, 2026-11-08)",
   "key": "H7",
   "mapVia": "own id",
   "status5": "completed",
   "status5Via": "canonical H7: state complete, waiting on none",
   "status5Word": "Completed",
   "canonicalId": "H7",
   "canonicalState": "complete",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "plainTitle": "The Eye — Black + gold, the 7-tab nav, phone layout, the deck. Shoots the live URL…",
   "outcome": "Completed on demo data: built 21 September 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come.",
   "group": "area-office",
   "groupName": "Office / Admin / Helpers",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "id": "H8",
   "whose": "build",
   "part": "agents",
   "cat": "Helper agents",
   "title": "The Checker — Writes the success criteria before the worker starts, grades the finished work against them, sends a fail back to the same worker, cap 5 rounds (§8)",
   "status": "done",
   "ask": "",
   "askKind": "shown",
   "source": "BUILD_PLAN §3",
   "lands": "",
   "note": "Built 2026-09-22 (hive/THE_CHECKER.md, loop in hive/HOW_A_TASK_RUNS.md, files in hive/checks/)",
   "needs": "",
   "link": "",
   "statusAsRecorded": "open",
   "statusVia": "read from this row's own build-state cell in BUILD_PLAN §3, cleaned: \"Built 2026-09-22 (hive/THE_CHECKER.md, loop in hive/HOW_A_TASK_RUNS.md, files in hive/checks/)\". The superseded 31 October accounting read the raw cell, whose bold markers hid the word, and recorded Not built; that recorded state is kept here and is what the frozen build card still counts (tasks-correction v1.0.0, 2026-11-08)",
   "key": "H8",
   "mapVia": "own id",
   "status5": "completed",
   "status5Via": "canonical H8: state complete, waiting on none",
   "status5Word": "Completed",
   "canonicalId": "H8",
   "canonicalState": "complete",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "plainTitle": "the hive — Writes the success criteria before the worker starts, grades the finished…",
   "outcome": "Completed on demo data: built 22 September 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come.",
   "group": "area-office",
   "groupName": "Office / Admin / Helpers",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "id": "H9",
   "whose": "build",
   "part": "agents",
   "cat": "Helper agents",
   "title": "The Builder — A standing seat that owns portal/ — app-ops.js, roles.js, sw.js, the gating assertions, node outbox/publish.cjs",
   "status": "done",
   "ask": "",
   "askKind": "shown",
   "source": "BUILD_PLAN §3",
   "lands": "",
   "note": "Built 2026-09-25 (hive/THE_BUILDER.md)",
   "needs": "",
   "link": "",
   "statusAsRecorded": "open",
   "statusVia": "read from this row's own build-state cell in BUILD_PLAN §3, cleaned: \"Built 2026-09-25 (hive/THE_BUILDER.md)\". The superseded 31 October accounting read the raw cell, whose bold markers hid the word, and recorded Not built; that recorded state is kept here and is what the frozen build card still counts (tasks-correction v1.0.0, 2026-11-08)",
   "key": "H9",
   "mapVia": "own id",
   "status5": "completed",
   "status5Via": "canonical H9: state complete, waiting on none",
   "status5Word": "Completed",
   "canonicalId": "H9",
   "canonicalState": "complete",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "plainTitle": "the hive — A standing seat that owns portal/ — the gating assertions, node outbox/",
   "outcome": "Completed on demo data: built 25 September 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come.",
   "group": "area-office",
   "groupName": "Office / Admin / Helpers",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "whose": "omar",
   "part": "decision",
   "ask": "",
   "askKind": "shown",
   "lands": "",
   "needs": "",
   "link": "",
   "id": "O1",
   "cat": "Omar: pushes & go-aheads",
   "title": "Put the latest app build on the portal link",
   "status": "done",
   "note": "The portal link runs the latest build (makki-portal-v43-wb4), deployed with this publish.",
   "source": "Solutions plan §8 · deployed with this publish",
   "key": "O1",
   "mapVia": "own id",
   "decisionKey": "publish",
   "decidedAt": "2026-09-21",
   "decisionWords": "publish it right away · if it passed the checks it's good",
   "decisionSource": "vault/topics/decisions/publish it right away.md (2026-09-21); vault/topics/decisions/if it passed the checks it's good.md (2026-09-27); the standing conditional release, Omar 2026-11-07 06:07Z Telegram 2114; main CHECKER ORDER 2026-11-07T06:52Z carrying Omar 06:48Z Telegram 2118 (hive/EXECUTION_LOG.md)",
   "decisionEffect": "gated publishing is a standing permission, not an open choice; O1 is complete on the live read",
   "status5": "completed",
   "status5Via": "its own live read of the portal link (status done); a standing permission, decided 2026-09-21",
   "status5Word": "Completed",
   "canonicalId": "O1",
   "canonicalState": "complete",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "plainTitle": "Put the latest app build on the portal link",
   "outcome": "Completed on demo data: built, recorded finished in the task accounting of 31 October 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come.",
   "group": "area-plat",
   "groupName": "Platform / Hosting / Launch",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "live",
   "liveWord": "on the live build"
  },
  {
   "whose": "omar",
   "part": "decision",
   "ask": "",
   "askKind": "shown",
   "lands": "",
   "needs": "",
   "link": "",
   "id": "O4",
   "cat": "Omar: pushes & go-aheads",
   "title": "Add the owner to this Telegram line",
   "status": "out",
   "note": "Closed by Omar's word of 3 October 2026 (“Forget that”): the owner is not being added to this line, so nothing is asked of him for it.",
   "source": "BUILD_PLAN §4 ask 6 · Omar 2026-10-03 00:31 UTC (vault/topics/people/Omar.md)",
   "statusAsRecorded": "open",
   "statusVia": "Omar declined the ask on 2026-10-03 (\"6. Forget that\"): nothing is asked of anyone for it, so the row is dropped on purpose and not counted. The master-list state it carried when the 31 October accounting was cut is kept beside it. Source: Omar 2026-10-03 00:31 UTC \"6. Forget that\" — Ask 6, the owner's Telegram id (vault/topics/people/Omar.md); the dated decision owner-line in omar_questions.json names this row.",
   "key": "O4",
   "mapVia": "alias",
   "mapEvidence": "GL-065 lists O4 as its alias (\"Add the owner to this Telegram line\") — canonical accounting v2.4 (materials/canonical/2026-10-31_canonical-tasks.v2.4.json, generated 2026-10-31)",
   "decisionKey": "owner-line",
   "decidedAt": "2026-10-03T00:31Z",
   "decisionWords": "6. Forget that",
   "decisionSource": "Omar 2026-10-03 00:31 UTC \"6. Forget that\" — Ask 6, the owner's Telegram id (vault/topics/people/Omar.md); main BUILDER ORDER 2026-11-07T17:40Z carrying Omar 17:06Z Telegram 2174 (hive/EXECUTION_LOG.md)",
   "decisionEffect": "The owner is not being added to this line; O4 routes by its own master-list status and GL-065 by its canonical state — neither waits on Omar or the owner any longer",
   "status5": "declined",
   "status5Via": "closed by a dated decline — the same dated decline, on the branch of the ask Omar closed: the owner is not being added to this line, so the row is dropped on purpose and is not counted as work still to do. Source: Omar 2026-10-03 00:31 UTC \"6. Forget that\" — Ask 6, the owner's Telegram id (vault/topics/people/Omar.md); the dated decision owner-line in omar_questions.json names this row.",
   "status5Word": "Declined",
   "canonicalId": "GL-065",
   "canonicalState": "cancelled",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "necessity": "dropped",
   "necessitySource": "Omar 2026-10-03 00:31 UTC \"6. Forget that\" — Ask 6, the owner's Telegram id (vault/topics/people/Omar.md); the dated decision owner-line in omar_questions.json names this row.",
   "necessityReason": "closed by a dated decline: the same dated decline, on the branch of the ask Omar closed: the owner is not being added to this line, so the row is dropped on purpose and is not counted as work still to do.",
   "necessityVia": "the canonical row GL-065's tag (tracker.json, reconciled over all 566 live rows)",
   "necessityWord": "Dropped",
   "status5Before": "not-done",
   "declinedScope": {
    "why": "the same dated decline, on the branch of the ask Omar closed: the owner is not being added to this line, so the row is dropped on purpose and is not counted as work still to do.",
    "source": "Omar 2026-10-03 00:31 UTC \"6. Forget that\" — Ask 6, the owner's Telegram id (vault/topics/people/Omar.md); the dated decision owner-line in omar_questions.json names this row."
   },
   "necessityBefore": "dropped",
   "plainTitle": "Add the owner to this Telegram line",
   "outcome": "Declined: dropped on purpose, not counted — Omar's word of 3 October 2026 settles it (“Forget that”); it waits on nobody.",
   "next": "Nothing further: Omar's word of 3 October 2026 closes this row.",
   "group": "area-office",
   "groupName": "Office / Admin / Helpers",
   "canonAliases": [
    "The owner 9"
   ],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "not-live",
   "liveWord": "not on the live build"
  },
  {
   "id": "The owner 1",
   "key": "ali-quickbooks",
   "whose": "owner",
   "part": "owner",
   "cat": "Owner: sit with us once",
   "title": "Fifteen minutes on QuickBooks Online, at your screen",
   "status": "open",
   "ask": "",
   "askKind": "shown",
   "source": "Slide 15 row 4 · Master list V32, V128 (your first words on the call)",
   "lands": "",
   "note": "Turns on: Real customers, jobs, invoices and payments. The Clerk and the Job Coster. Real map pins.",
   "needs": "",
   "link": "",
   "mapVia": "alias, same title",
   "mapEvidence": "GL-046 lists The owner 1 as its alias under this row's own title — canonical accounting v2.4 (materials/canonical/2026-10-31_canonical-tasks.v2.4.json, generated 2026-10-31)",
   "status5": "needs-ali",
   "status5Via": "The owner's own task",
   "status5Word": "Needs Ali",
   "canonicalId": "GL-046",
   "canonicalState": "blocked",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "necessity": "needed-for-launch",
   "necessitySource": "plan v0.2 (materials/handoff/2026-10-31_0102_audit-v2.4/DRAFT_MAKKI_PROJECT_PLAN_2026-10-31_v0.2.md, generated 2026-10-31): card fin-qbo \"QuickBooks Online connection, first import and The Books\" on finish line 2",
   "necessityVia": "the canonical row GL-046's tag (tracker.json, reconciled over all 566 live rows)",
   "necessityWord": "Needed for launch",
   "plainTitle": "Fifteen minutes on QuickBooks Online, at your screen",
   "outcome": "Needs Ali: only the owner can send or decide this.",
   "next": "Turns: Real customers, jobs, invoices and payments. The Clerk and the Job Coster. Real map pins.",
   "group": "area-fin",
   "groupName": "Finance / QuickBooks",
   "alsoAreas": [
    "Office / Admin / Helpers"
   ],
   "canonAliases": [
    "The owner 1"
   ],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "not-live",
   "liveWord": "not on the live build"
  },
  {
   "id": "The owner 2",
   "key": "ali-crew",
   "whose": "owner",
   "part": "owner",
   "cat": "Owner: send us",
   "title": "Crew list: names, mobiles, tickets and expiry dates",
   "status": "open",
   "ask": "",
   "askKind": "shown",
   "source": "Slide 15 row 2 · Solutions plan §7 step 2",
   "lands": "",
   "note": "Turns on: Real tickets, real crews, the blocking rule on real men, and texting.",
   "needs": "",
   "link": "",
   "identityNote": "The owner's own ask on his send list: the crew information itself, not a build requirement, so the accounting carries no separate row for it. It turns on real tickets, real crews and the blocking rule on real men.",
   "identityVia": "tasks-correction v1.0.0, 2026-11-08: the row's own mapping, stated because the accounting carries no separate row for it",
   "mapVia": "own id",
   "status5": "needs-ali",
   "status5Via": "The owner's own task",
   "status5Word": "Needs Ali",
   "canonicalId": "The owner 2",
   "canonicalState": "open",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "necessity": "needed-for-launch",
   "necessitySource": "plan v0.2 (materials/handoff/2026-10-31_0102_audit-v2.4/DRAFT_MAKKI_PROJECT_PLAN_2026-10-31_v0.2.md, generated 2026-10-31): card fin-cutover \"Data migration and the real-data cut-over\" on finish line 2",
   "necessityVia": "the canonical row The owner 2's tag (tracker.json, reconciled over all 566 live rows)",
   "necessityWord": "Needed for launch",
   "plainTitle": "Crew list: names, mobiles, tickets and expiry dates",
   "outcome": "Needs Ali: only the owner can send or decide this.",
   "next": "Turns: Real tickets, real crews, the blocking rule on real men, and texting.",
   "group": "area-fin",
   "groupName": "Finance / QuickBooks",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "not-live",
   "liveWord": "not on the live build"
  },
  {
   "id": "The owner 4",
   "key": "ali-quotes",
   "whose": "owner",
   "part": "owner",
   "cat": "Owner: send us",
   "title": "A handful of past quotes, or access to the quoting assistant you trained",
   "status": "open",
   "ask": "",
   "askKind": "shown",
   "source": "Slide 15 row 6 · BUILD_PLAN §4 ask 2",
   "lands": "",
   "note": "Turns on: The Estimator drafts quotes in your pricing. Bid items on the proposal.",
   "needs": "",
   "link": "",
   "mapVia": "alias, same title",
   "mapEvidence": "GL-061 lists The owner 4 as its alias under this row's own title — canonical accounting v2.4 (materials/canonical/2026-10-31_canonical-tasks.v2.4.json, generated 2026-10-31)",
   "status5": "needs-ali",
   "status5Via": "The owner's own task",
   "status5Word": "Needs Ali",
   "canonicalId": "GL-061",
   "canonicalState": "blocked",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "necessity": "needed-for-demo",
   "necessitySource": "plan v0.2 (materials/handoff/2026-10-31_0102_audit-v2.4/DRAFT_MAKKI_PROJECT_PLAN_2026-10-31_v0.2.md, generated 2026-10-31): card sales-est \"Estimating knowledge, reviewed AI estimates and the Estimator seat\" on finish line 1",
   "necessityVia": "the canonical row GL-061's tag (tracker.json, reconciled over all 566 live rows)",
   "necessityWord": "Needed for the demo",
   "plainTitle": "A handful of past quotes, or access to the quoting assistant you trained",
   "outcome": "Needs Ali: only the owner can send or decide this.",
   "next": "Turns: The Estimator drafts quotes in your pricing. Bid items on the proposal.",
   "group": "area-sales",
   "groupName": "Sales / Estimating",
   "alsoAreas": [
    "Office / Admin / Helpers"
   ],
   "canonAliases": [
    "The owner 4"
   ],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "not-live",
   "liveWord": "not on the live build"
  },
  {
   "id": "The owner 5",
   "key": "ali-forms",
   "whose": "owner",
   "part": "owner",
   "cat": "Owner: send us",
   "title": "Your forms: containment log, waste manifest, adjuster sheet",
   "status": "open",
   "ask": "",
   "askKind": "shown",
   "source": "Slide 15 row 5 · Master list V104, V106, V131 (your own words @4:26)",
   "lands": "",
   "note": "Turns on: The abatement paperwork you flagged yourself: asbestos lines on the daily, the containment log, red-until-filled fields.",
   "needs": "",
   "link": "",
   "identityNote": "The owner's own ask on his send list: his own abatement paperwork, not a build requirement, so the accounting carries no separate row for it. It turns on the asbestos lines on the daily, the containment log and the red-until-filled fields.",
   "identityVia": "tasks-correction v1.0.0, 2026-11-08: the row's own mapping, stated because the accounting carries no separate row for it",
   "mapVia": "own id",
   "status5": "needs-ali",
   "status5Via": "The owner's own task",
   "status5Word": "Needs Ali",
   "canonicalId": "The owner 5",
   "canonicalState": "open",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "necessity": "needed-for-launch",
   "necessitySource": "plan v0.2 (materials/handoff/2026-10-31_0102_audit-v2.4/DRAFT_MAKKI_PROJECT_PLAN_2026-10-31_v0.2.md, generated 2026-10-31): card fin-cutover \"Data migration and the real-data cut-over\" on finish line 2",
   "necessityVia": "the canonical row The owner 5's tag (tracker.json, reconciled over all 566 live rows)",
   "necessityWord": "Needed for launch",
   "plainTitle": "Your forms: containment log, waste manifest, adjuster sheet",
   "outcome": "Needs Ali: only the owner can send or decide this.",
   "next": "Turns: The abatement paperwork you flagged yourself: asbestos lines on the daily, the containment log, red-until-filled fields.",
   "group": "area-fin",
   "groupName": "Finance / QuickBooks",
   "alsoAreas": [
    "Crew (the field day)"
   ],
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "not-live",
   "liveWord": "not on the live build"
  },
  {
   "id": "The owner 6",
   "key": "ali-ohs",
   "whose": "owner",
   "part": "owner",
   "cat": "Owner: send us",
   "title": "Your OHS documents: JHAs, SWPs, toolbox talks",
   "status": "open",
   "ask": "",
   "askKind": "shown",
   "source": "Slide 15 row 7 · BUILD_PLAN §4 ask 4",
   "lands": "",
   "note": "Turns on: A real safety library instead of placeholders. The Safety Officer.",
   "needs": "",
   "link": "",
   "mapVia": "alias, same title",
   "mapEvidence": "GL-063 lists The owner 6 as its alias under this row's own title — canonical accounting v2.4 (materials/canonical/2026-10-31_canonical-tasks.v2.4.json, generated 2026-10-31)",
   "status5": "needs-ali",
   "status5Via": "The owner's own task",
   "status5Word": "Needs Ali",
   "canonicalId": "GL-063",
   "canonicalState": "blocked",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "necessity": "needed-for-demo",
   "necessitySource": "plan v0.2 (materials/handoff/2026-10-31_0102_audit-v2.4/DRAFT_MAKKI_PROJECT_PLAN_2026-10-31_v0.2.md, generated 2026-10-31): card safe-lib \"Safety document library, permits and credential controls\" on finish line 1",
   "necessityVia": "the canonical row GL-063's tag (tracker.json, reconciled over all 566 live rows)",
   "necessityWord": "Needed for the demo",
   "plainTitle": "Your OHS documents: JHAs, SWPs, toolbox talks",
   "outcome": "Needs Ali: only the owner can send or decide this.",
   "next": "Turns: A real safety library instead of placeholders. The Safety Officer.",
   "group": "area-safe",
   "groupName": "Safety · Tickets · People",
   "alsoAreas": [
    "Platform / Hosting / Launch"
   ],
   "canonAliases": [
    "The owner 6"
   ],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "not-live",
   "liveWord": "not on the live build"
  },
  {
   "id": "The owner 7",
   "key": "ali-permits",
   "whose": "owner",
   "part": "owner",
   "cat": "Owner: send us",
   "title": "A couple of real permits (a demolition permit, an abatement notification)",
   "status": "open",
   "ask": "",
   "askKind": "shown",
   "source": "Not built & why §1 row 26",
   "lands": "",
   "note": "Turns on: The permit document itself held on the job, not just its expiry date.",
   "needs": "",
   "link": "",
   "mapVia": "alias, same title",
   "mapEvidence": "GL-050 lists The owner 7 as its alias under this row's own title — canonical accounting v2.4 (materials/canonical/2026-10-31_canonical-tasks.v2.4.json, generated 2026-10-31)",
   "status5": "needs-ali",
   "status5Via": "The owner's own task",
   "status5Word": "Needs Ali",
   "canonicalId": "GL-050",
   "canonicalState": "blocked",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "necessity": "needed-for-demo",
   "necessitySource": "plan v0.2 (materials/handoff/2026-10-31_0102_audit-v2.4/DRAFT_MAKKI_PROJECT_PLAN_2026-10-31_v0.2.md, generated 2026-10-31): card safe-lib \"Safety document library, permits and credential controls\" on finish line 1",
   "necessityVia": "the canonical row GL-050's tag (tracker.json, reconciled over all 566 live rows)",
   "necessityWord": "Needed for the demo",
   "plainTitle": "A couple of real permits (a demolition permit, an abatement notification)",
   "outcome": "Needs Ali: only the owner can send or decide this.",
   "next": "Turns: The permit document itself held on the job, not just its expiry date.",
   "group": "area-safe",
   "groupName": "Safety · Tickets · People",
   "canonAliases": [
    "The owner 7"
   ],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "not-live",
   "liveWord": "not on the live build"
  },
  {
   "id": "The owner 8",
   "key": "ali-payroll",
   "whose": "owner",
   "part": "owner",
   "cat": "Owner: send us",
   "title": "Which payroll system you use",
   "status": "open",
   "ask": "",
   "askKind": "shown",
   "source": "BUILD_PLAN §4 ask 3",
   "lands": "",
   "note": "Turns on: The Job Coster puts payroll hours on the right job.",
   "needs": "",
   "link": "",
   "mapVia": "alias, same title",
   "mapEvidence": "GL-062 lists The owner 8 as its alias under this row's own title — canonical accounting v2.4 (materials/canonical/2026-10-31_canonical-tasks.v2.4.json, generated 2026-10-31)",
   "status5": "needs-ali",
   "status5Via": "The owner's own task",
   "status5Word": "Needs Ali",
   "canonicalId": "GL-062",
   "canonicalState": "blocked",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "necessity": "needed-for-demo",
   "necessitySource": "plan v0.2 (materials/handoff/2026-10-31_0102_audit-v2.4/DRAFT_MAKKI_PROJECT_PLAN_2026-10-31_v0.2.md, generated 2026-10-31): card fin-payroll \"Payroll approval, allocation to jobs and export\" on finish line 1",
   "necessityVia": "the canonical row GL-062's tag (tracker.json, reconciled over all 566 live rows)",
   "necessityWord": "Needed for the demo",
   "plainTitle": "Which payroll system you use",
   "outcome": "Needs Ali: only the owner can send or decide this.",
   "next": "Turns: The Job Coster puts payroll hours on the right job.",
   "group": "area-fin",
   "groupName": "Finance / QuickBooks",
   "alsoAreas": [
    "Platform / Hosting / Launch"
   ],
   "canonAliases": [
    "The owner 8"
   ],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "not-live",
   "liveWord": "not on the live build"
  },
  {
   "id": "ali-telegram",
   "key": "ali-telegram",
   "whose": "owner",
   "part": "owner",
   "cat": "Owner: send us",
   "title": "Your Telegram id",
   "status": "out",
   "ask": "",
   "askKind": "shown",
   "source": "BUILD_PLAN §4 ask 6 · closed: Omar 2026-10-03 00:31 UTC (vault/topics/people/Omar.md)",
   "lands": "",
   "note": "Turns on: nothing now — Omar closed this ask on 3 October 2026; the owner is not being added to this line.",
   "needs": "",
   "link": "",
   "idBefore": "The owner 9",
   "statusAsRecorded": "open",
   "statusVia": "Omar declined the ask on 2026-10-03 (\"6. Forget that\"): the owner is not being added to this line, so the row is dropped on purpose and not counted. The master-list state it carried when the 31 October accounting was cut is kept beside it. Source: Omar 2026-10-03 00:31 UTC \"6. Forget that\" — Ask 6, the owner's Telegram id (vault/topics/people/Omar.md); the dated decision owner-line-ask in omar_questions.json names this branch.",
   "identityNote": "The owner's own ask for his Telegram id, declined by Omar on 2026-10-03. It is the branch the dated decision names, carried here under that name as the ask it closed; Omar's own row and the go-live record point at the same authorisation and nothing is asked of anyone twice.",
   "identityVia": "tasks-correction v1.0.0, 2026-11-08: the row's own mapping, stated because the accounting carries no separate row for it",
   "decisionKey": "owner-line-ask",
   "decidedAt": "2026-10-03T00:31Z",
   "decisionWords": "6. Forget that",
   "decisionSource": "Omar 2026-10-03 00:31 UTC \"6. Forget that\" — Ask 6, the owner's Telegram id (vault/topics/people/Omar.md); main BUILDER ORDER 2026-11-07T17:40Z carrying Omar 17:06Z Telegram 2174 (hive/EXECUTION_LOG.md); Omar's independent live review of the All Tasks page, 2026-11-07 22:13 UTC Telegram 2233, carried by main's Builder order 2026-11-07T23:10Z (hive/EXECUTION_LOG.md); pin v2.3.0 (hive/checks/2026-11-07_requirements-tasks-b3.md, 2026-11-07)",
   "decisionEffect": "The owner's own ask row for his Telegram id closes with the decline: the owner is not being added to this line, nothing is needed from him here and no row asks for the id (the O4 / GL-065 decision owner-line, applied to the ask row the pin names)",
   "status5": "declined",
   "status5Via": "closed by a dated decline — The owner's own ask for his Telegram id, declined by Omar on 3 October 2026: nothing is asked of the owner for it and nothing is built, so it is history rather than required unfinished work. Source: Omar 2026-10-03 00:31 UTC \"6. Forget that\" — Ask 6, the owner's Telegram id (vault/topics/people/Omar.md); the dated decision owner-line-ask in omar_questions.json names this branch.",
   "status5Word": "Declined",
   "canonicalId": null,
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "necessity": "dropped",
   "necessityReason": "closed by a dated decline: the owner's own ask for his Telegram id, declined by Omar on 3 October 2026: nothing is asked of the owner for it and nothing is built, so it is history rather than required unfinished work.",
   "necessitySource": "Omar 2026-10-03 00:31 UTC \"6. Forget that\" — Ask 6, the owner's Telegram id (vault/topics/people/Omar.md); the dated decision owner-line-ask in omar_questions.json names this branch.",
   "necessityWord": "Dropped",
   "status5Before": "not-done",
   "declinedScope": {
    "why": "The owner's own ask for his Telegram id, declined by Omar on 3 October 2026: nothing is asked of the owner for it and nothing is built, so it is history rather than required unfinished work.",
    "source": "Omar 2026-10-03 00:31 UTC \"6. Forget that\" — Ask 6, the owner's Telegram id (vault/topics/people/Omar.md); the dated decision owner-line-ask in omar_questions.json names this branch."
   },
   "necessityBefore": "dropped",
   "plainTitle": "Your Telegram id",
   "outcome": "Declined: dropped on purpose, not counted — Omar's word of 3 October 2026 settles it (“Forget that”); it waits on nobody.",
   "next": "Nothing further: Omar's word of 3 October 2026 closes this row.",
   "group": "cat-ali-send-us",
   "groupName": "Owner: send us",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "not-live",
   "liveWord": "not on the live build"
  },
  {
   "id": "The owner 13",
   "key": "ali-website",
   "whose": "owner",
   "part": "owner",
   "cat": "Owner: say yes or no",
   "title": "Does Makki have a public website today, and do you want one?",
   "status": "open",
   "ask": "",
   "askKind": "shown",
   "source": "BUILD_PLAN §4 ask 1",
   "lands": "",
   "note": "Turns on: Whether a website gets planned at all.",
   "needs": "",
   "link": "",
   "mapVia": "alias, same title",
   "mapEvidence": "GL-060 lists The owner 13 as its alias under this row's own title — canonical accounting v2.4 (materials/canonical/2026-10-31_canonical-tasks.v2.4.json, generated 2026-10-31)",
   "status5": "needs-ali",
   "status5Via": "The owner's own task",
   "status5Word": "Needs Ali",
   "canonicalId": "GL-060",
   "canonicalState": "blocked",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "necessity": "needed-for-launch",
   "necessitySource": "plan v0.2 (materials/handoff/2026-10-31_0102_audit-v2.4/DRAFT_MAKKI_PROJECT_PLAN_2026-10-31_v0.2.md, generated 2026-10-31): card plat-web \"Public website and staff entry page\" on finish line 2",
   "necessityVia": "the canonical row GL-060's tag (tracker.json, reconciled over all 566 live rows)",
   "necessityWord": "Needed for launch",
   "plainTitle": "Does Makki have a public website today, and do you want one?",
   "outcome": "Needs Ali: only the owner can send or decide this.",
   "next": "Turns: Whether a website gets planned at all.",
   "group": "area-plat",
   "groupName": "Platform / Hosting / Launch",
   "canonAliases": [
    "The owner 13"
   ],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "not-live",
   "liveWord": "not on the live build"
  },
  {
   "id": "The owner 17",
   "key": "ali-payrollswitch",
   "whose": "owner",
   "part": "owner",
   "cat": "Owner: say yes or no",
   "title": "Flip the bookkeeper's Payroll-hours switch on (Team & Access)",
   "status": "open",
   "ask": "",
   "askKind": "shown",
   "source": "Not built & why §3 row 51 · Master list V129",
   "lands": "",
   "note": "Turns on: Your accountant sees hours and never rates: your own @8:14 ask. Ten seconds, nothing to build.",
   "needs": "",
   "link": "",
   "mapVia": "alias, same title",
   "mapEvidence": "GL-052 lists The owner 17 as its alias under this row's own title — canonical accounting v2.4 (materials/canonical/2026-10-31_canonical-tasks.v2.4.json, generated 2026-10-31)",
   "status5": "needs-ali",
   "status5Via": "The owner's own task",
   "status5Word": "Needs Ali",
   "canonicalId": "GL-052",
   "canonicalState": "blocked",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "necessity": "needed-for-demo",
   "necessitySource": "plan v0.2 (materials/handoff/2026-10-31_0102_audit-v2.4/DRAFT_MAKKI_PROJECT_PLAN_2026-10-31_v0.2.md, generated 2026-10-31): card fin-payroll \"Payroll approval, allocation to jobs and export\" on finish line 1",
   "necessityVia": "the canonical row GL-052's tag (tracker.json, reconciled over all 566 live rows)",
   "necessityWord": "Needed for the demo",
   "plainTitle": "Flip the bookkeeper's Payroll-hours switch on (Team & Access)",
   "outcome": "Needs Ali: only the owner can send or decide this.",
   "next": "Turns: Your accountant sees hours and never rates: your own ask. Ten seconds, nothing to build.",
   "group": "area-fin",
   "groupName": "Finance / QuickBooks",
   "alsoAreas": [
    "Management (owner · PM · lead)"
   ],
   "canonAliases": [
    "The owner 17"
   ],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "not-live",
   "liveWord": "not on the live build"
  },
  {
   "id": "The owner 19",
   "key": "ali-branches",
   "whose": "owner",
   "part": "owner",
   "cat": "Owner: send us",
   "title": "Your real branch structure, if Makki has more than one branch",
   "status": "open",
   "ask": "",
   "askKind": "shown",
   "source": "build the six not built (2026-10-04) · one company only, Now-block (2026-10-04)",
   "lands": "",
   "note": "Turns on: Real branch names on the owner's HQ tab instead of the demo labels; one company stands everywhere else.",
   "needs": "The owner names his real branches; the HQ tab is built and maps to the canonical branch row, which stands on demo labels until he does.",
   "link": "",
   "splitFrom": "GL-037",
   "evidence": "The HQ tab rolls jobs and money up by branch with a branch switcher, where every branch is a demo label from the seed and never a company name; the real branch structure arrives with the owner's answers, or not at all.",
   "evidenceSource": "vault/topics/decisions/build the six not built.md (Omar 2026-10-04 04:49 UTC); vault/topics/decisions/one company only.md, Now-block 2026-10-04",
   "identityNote": "Split from the HQ-across-branches row, whose canonical row carries the half that was built. This ask is the real branch information the owner sends; the accounting carries no separate row for information, so the mapping is to the parent row named here.",
   "identityVia": "tasks-correction v1.0.0, 2026-11-08: the row's own mapping, stated because the accounting carries no separate row for it",
   "needsBefore": "",
   "status5": "needs-ali",
   "status5Via": "The owner's own task",
   "status5Word": "Needs Ali",
   "canonicalId": null,
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "necessity": "needed-for-demo",
   "necessitySource": "split from GL-037, whose tag is: plan v0.2 (materials/handoff/2026-10-31_0102_audit-v2.4/DRAFT_MAKKI_PROJECT_PLAN_2026-10-31_v0.2.md, generated 2026-10-31): card office-company \"Company page, branding, Messages, Ideas and HQ\" on finish line 1",
   "necessityVia": "the parent row GL-037's tag",
   "necessityWord": "Needed for the demo",
   "plainTitle": "Your real branch structure, if Makki has more than one branch",
   "outcome": "Needs Ali: only the owner can send or decide this.",
   "next": "The owner names his real branches; the HQ tab is built and maps to the canonical branch row, which stands on demo labels until he does.",
   "group": "cat-ali-send-us",
   "groupName": "Owner: send us",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "not-live",
   "liveWord": "not on the live build"
  },
  {
   "id": "A4-rest",
   "whose": "build",
   "part": "app",
   "cat": "The app: buttons & actions",
   "title": "Notifications bell for the bookkeeper, estimator and crew logins: live items instead of three fixed sample lines",
   "status": "open",
   "ask": "",
   "askKind": "shown",
   "source": "Master list row A4 (2026-09-16): the unfinished half of its own note, split out 2026-11-07 (Omar's live review, Telegram 2233, scope 5)",
   "lands": "",
   "note": "The owner's and the site lead's bells are a live bus fed off the incident register, change orders and the foreman's site notes; the bookkeeper, estimator and crew logins still get three fixed sample lines in the bell.",
   "needs": "",
   "link": "",
   "splitFrom": "A4",
   "evidence": "The owner's and the site lead's bells are a live bus fed off the incident register, change orders and the foreman's site notes; the bookkeeper, estimator and crew logins still get three fixed sample lines in the bell.",
   "evidenceSource": "profile/Master_List_2026-09-16.md:156 (A4): \"Built — rebuilt 2026-09-20 for the owner and the site lead … The bookkeeper, estimator and crew logins still get three fixed sample lines in the bell\" (read 2026-11-07); omar_questions.json coverage row A4 (partly), requirements-tasks-b3 2026-11-07",
   "splitRow": true,
   "key": "A4-rest",
   "mapVia": "own id",
   "status5": "not-done",
   "status5Via": "canonical A4-rest: state open, waiting on none",
   "status5Word": "Not done",
   "canonicalId": "A4-rest",
   "canonicalState": "open",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "necessity": "needed-for-launch",
   "necessitySource": "the remainder of A4, which carries this row's tag: plan v0.2 (materials/handoff/2026-10-31_0102_audit-v2.4/DRAFT_MAKKI_PROJECT_PLAN_2026-10-31_v0.2.md, generated 2026-10-31): card office-msg \"Notifications, broadcasts and auto-send\" on finish line 2",
   "necessityVia": "the canonical row A4-rest's tag (tracker.json, reconciled over all 566 live rows)",
   "necessityWord": "Needed for launch",
   "plainTitle": "Notifications bell for the bookkeeper, estimator and crew logins: live items instead of…",
   "outcome": "Not done: not started.",
   "next": "Next: the hive builds it on demo data; nothing waits on anyone else.",
   "group": "area-office",
   "groupName": "Office / Admin / Helpers",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "not-live",
   "liveWord": "not on the live build"
  },
  {
   "id": "V69-rest",
   "whose": "build",
   "part": "walkthrough",
   "cat": "Setting up a job",
   "title": "Mandatory trainings, not only tickets, checked when scheduling and on the timesheet",
   "status": "open",
   "ask": "",
   "askKind": "shown",
   "source": "Master list row V69 (2026-09-16): the unfinished half of its own note, split out 2026-11-07 (Omar's live review, Telegram 2233, scope 5)",
   "lands": "",
   "note": "Mandatory tickets are set once and checked on the schedule and the timesheet, and the app refuses a man without them; trainings are not covered, only tickets, and the refusal is not a warning.",
   "needs": "",
   "link": "",
   "splitFrom": "V69",
   "evidence": "Mandatory tickets are set once and checked on the schedule and the timesheet, and the app refuses a man without them; trainings are not covered, only tickets, and the refusal is not a warning.",
   "evidenceSource": "profile/Master_List_2026-09-16.md:337 (V69): \"Built — and ours refuses rather than warning. Trainings are not covered, only tickets\" (read 2026-11-07); omar_questions.json coverage row V69 (partly), requirements-tasks-b3 2026-11-07",
   "splitRow": true,
   "titleBefore": "Mandatory trainings checked when scheduling and on the timesheet, with a warning instead of a refusal",
   "policyScope": "This row is the missing coverage only: trainings as well as tickets. Whether a missing one refuses the booking or only warns is a separate policy question, not decided here; the app refuses today and that refusal stands until a dated source rules on it.",
   "policySource": "profile/Master_List_2026-09-16.md:337 (V69): \"Built — and ours refuses rather than warning. Trainings are not covered, only tickets\" (read 2026-11-07). The refusal-versus-warning wording came from that one comparison line and no dated source rules on it, so the row no longer mandates a warning — tasks-correction v1.0.0, 2026-11-08.",
   "key": "V69-rest",
   "mapVia": "own id",
   "status5": "not-done",
   "status5Via": "canonical V69-rest: state open, waiting on none",
   "status5Word": "Not done",
   "canonicalId": "V69-rest",
   "canonicalState": "open",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "necessity": "needed-for-demo",
   "necessitySource": "the remainder of V69, which carries this row's tag: plan v0.2 (materials/handoff/2026-10-31_0102_audit-v2.4/DRAFT_MAKKI_PROJECT_PLAN_2026-10-31_v0.2.md, generated 2026-10-31): card safe-tickets \"Tickets and certificates\" on finish line 1",
   "necessityVia": "the canonical row V69-rest's tag (tracker.json, reconciled over all 566 live rows)",
   "necessityWord": "Needed for the demo",
   "plainTitle": "Mandatory trainings, not only tickets, checked when scheduling and on the timesheet",
   "outcome": "Not done: not started.",
   "next": "Next: the hive builds it on demo data; nothing waits on anyone else.",
   "group": "area-safe",
   "groupName": "Safety · Tickets · People",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "not-live",
   "liveWord": "not on the live build"
  },
  {
   "id": "H4-rest",
   "whose": "build",
   "part": "agents",
   "cat": "Helper agents",
   "title": "The Ticket Keeper's safety half: the OHS and asbestos paperwork tied to the right site",
   "status": "open",
   "ask": "",
   "askKind": "shown",
   "source": "BUILD_PLAN §3 row 4 (The Ticket Keeper): the unfinished half of its own note, split out 2026-11-07 (Omar's live review, Telegram 2233, scope 5)",
   "lands": "",
   "note": "The Ticket Keeper runs Mondays: expiring tickets, who cannot be booked, hard-hat codes. The safety half it was merged with — the OHS and asbestos paperwork tied to the right site — has not been started; the weekly tickets report (A63) is the finished half of the same row.",
   "needs": "",
   "link": "",
   "splitFrom": "H4",
   "remainderOf": "A63",
   "evidence": "The Ticket Keeper runs Mondays: expiring tickets, who cannot be booked, hard-hat codes. The safety half it was merged with — the OHS and asbestos paperwork tied to the right site — has not been started; the weekly tickets report (A63) is the finished half of the same row.",
   "evidenceSource": "BUILD_PLAN.md §3 row 4 (The Ticket Keeper): \"Built; scheduled 2026-10-03, job e7259a56, Monday 5 a.m. Calgary. Safety half not started\" (read 2026-11-07); omar_questions.json coverage row H4 (partly), requirements-tasks-b3 2026-11-07",
   "splitRow": true,
   "key": "H4-rest",
   "mapVia": "own id",
   "status5": "not-done",
   "status5Via": "canonical H4-rest: state open, waiting on none",
   "status5Word": "Not done",
   "canonicalId": "H4-rest",
   "canonicalState": "open",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "necessity": "needed-for-demo",
   "necessitySource": "the remainder of H4, which carries this row's tag: plan v0.2 (materials/handoff/2026-10-31_0102_audit-v2.4/DRAFT_MAKKI_PROJECT_PLAN_2026-10-31_v0.2.md, generated 2026-10-31): card office-seats \"The helper agents and their schedules\" on finish line 1",
   "necessityVia": "the canonical row H4-rest's tag (tracker.json, reconciled over all 566 live rows)",
   "necessityWord": "Needed for the demo",
   "plainTitle": "The Ticket Keeper's safety half: the OHS and asbestos paperwork tied to the right site",
   "outcome": "Not done: not started.",
   "next": "Next: the hive builds it on demo data; nothing waits on anyone else.",
   "group": "area-office",
   "groupName": "Office / Admin / Helpers",
   "canonAliases": [],
   "functional": {
    "state": "unknown",
    "scope": "not tested on the live release: no review on evidence has ruled on this row for the release the live host carries",
    "tag": null,
    "date": null,
    "evidence": null,
    "note": "the hive's filed report is the status word's only source; a review on evidence has not ruled on this row"
   },
   "live": "not-live",
   "liveWord": "not on the live build"
  }
 ],
 "groups": [
  {
   "key": "area-crew",
   "name": "Crew (the field day)",
   "from": "area",
   "ids": [
    "V12",
    "V83",
    "V84",
    "V85",
    "V86",
    "V87",
    "V89",
    "V90",
    "V92",
    "V93",
    "V94",
    "V95",
    "V96",
    "V97",
    "V100",
    "V101",
    "V103",
    "V104",
    "V105",
    "V106",
    "V107",
    "V108",
    "V131",
    "V132",
    "P28",
    "P37",
    "P38",
    "A39",
    "A40",
    "A41",
    "A42",
    "A44",
    "A45"
   ],
   "count": 33
  },
  {
   "key": "area-mgmt",
   "name": "Management (owner · PM · lead)",
   "from": "area",
   "ids": [
    "V1",
    "V3",
    "V5",
    "V6",
    "V8",
    "V9",
    "V10",
    "V11",
    "V13",
    "V14",
    "V15",
    "V17",
    "V19",
    "V20",
    "V36",
    "V60",
    "V66",
    "V68",
    "V71",
    "V72",
    "V73",
    "V74",
    "V75",
    "V76",
    "V80",
    "V81",
    "V115",
    "V117",
    "V118",
    "V125",
    "V126",
    "V133",
    "V139",
    "P1",
    "P2",
    "P6",
    "P7",
    "P8",
    "P12",
    "P22",
    "P27",
    "P29",
    "P30",
    "P31",
    "P32",
    "P39",
    "A1",
    "A3",
    "A5",
    "A6",
    "A7",
    "A8",
    "A9",
    "A10",
    "A11",
    "A12",
    "A13",
    "A14",
    "A15",
    "A16",
    "A21",
    "A22",
    "A23",
    "A25",
    "A26",
    "A27",
    "A28",
    "A29",
    "A30",
    "A31",
    "A32",
    "A34",
    "A35",
    "A36",
    "A37",
    "A54",
    "A55"
   ],
   "count": 77
  },
  {
   "key": "area-fin",
   "name": "Finance / QuickBooks",
   "from": "area",
   "ids": [
    "V32",
    "V33",
    "V35",
    "V65",
    "V70",
    "V77",
    "V119",
    "V120",
    "V121",
    "V122",
    "V128",
    "V129",
    "P5",
    "P9",
    "P10",
    "P11",
    "P17",
    "P18",
    "P19",
    "P20",
    "P21",
    "P26",
    "A20",
    "A24",
    "A50",
    "A51",
    "A52",
    "A53",
    "A58",
    "H6",
    "The owner 1",
    "The owner 2",
    "The owner 5",
    "The owner 8",
    "The owner 17"
   ],
   "count": 35
  },
  {
   "key": "area-gear",
   "name": "Equipment / QR / Inventory",
   "from": "area",
   "ids": [
    "V26",
    "V37",
    "V38",
    "V39",
    "V55",
    "V56",
    "V57",
    "V58",
    "V59",
    "V61",
    "V62",
    "V63",
    "V64",
    "P15",
    "P16",
    "P35",
    "P36",
    "P40",
    "P41",
    "P42",
    "A19",
    "A49",
    "A56",
    "A57"
   ],
   "count": 24
  },
  {
   "key": "area-safe",
   "name": "Safety · Tickets · People",
   "from": "area",
   "ids": [
    "V18",
    "V21",
    "V22",
    "V23",
    "V24",
    "V25",
    "V34",
    "V40",
    "V41",
    "V42",
    "V43",
    "V44",
    "V45",
    "V46",
    "V47",
    "V48",
    "V49",
    "V50",
    "V51",
    "V52",
    "V53",
    "V54",
    "V67",
    "V69",
    "V88",
    "V99",
    "V102",
    "P13",
    "P14",
    "P33",
    "P34",
    "A17",
    "A18",
    "A46",
    "A47",
    "A48",
    "The owner 6",
    "The owner 7",
    "V69-rest"
   ],
   "count": 39
  },
  {
   "key": "area-sales",
   "name": "Sales / Estimating",
   "from": "area",
   "ids": [
    "V27",
    "V78",
    "V79",
    "V110",
    "V111",
    "V112",
    "V113",
    "P3",
    "P4",
    "P23",
    "P24",
    "P25",
    "A33",
    "H5",
    "The owner 4"
   ],
   "count": 15
  },
  {
   "key": "area-office",
   "name": "Office / Admin / Helpers",
   "from": "area",
   "ids": [
    "V2",
    "V4",
    "V7",
    "V16",
    "V28",
    "V29",
    "V30",
    "V31",
    "V91",
    "V98",
    "V109",
    "V114",
    "V116",
    "V136",
    "V137",
    "V138",
    "A4",
    "A38",
    "A43",
    "A60",
    "A61",
    "A62",
    "A63",
    "H1",
    "H2",
    "H3",
    "H4",
    "H7",
    "H8",
    "H9",
    "O4",
    "A4-rest",
    "H4-rest"
   ],
   "count": 33
  },
  {
   "key": "area-plat",
   "name": "Platform / Hosting / Launch",
   "from": "area",
   "ids": [
    "A2",
    "A59",
    "O1",
    "The owner 13"
   ],
   "count": 4
  },
  {
   "key": "area-pres",
   "name": "Presentation (finish line 1)",
   "from": "area",
   "ids": [
    "V124"
   ],
   "count": 1
  },
  {
   "key": "cat-ali-send-us",
   "name": "Owner: send us",
   "from": "cat",
   "ids": [
    "ali-telegram",
    "The owner 19"
   ],
   "count": 2
  },
  {
   "key": "cat-ali-s-own-asks",
   "name": "The owner's own asks",
   "from": "cat",
   "ids": [
    "V127"
   ],
   "count": 1
  }
 ],
 "receipts": [],
 "golive_build": [
  {
   "id": "GL-003",
   "title": "Emergency contact details on the man's own record — name and number of who to call; there is no edit form for a man anywhere",
   "wave": "gl-wave1-people",
   "recordedState": "Done, waiting for review",
   "status5": "completed",
   "status5Word": "Completed",
   "status5Via": "canonical GL-003: state review, waiting on none",
   "plainTitle": "Emergency contact details on the man's own record — name and number of who to call…",
   "outcome": "Completed on demo data: built and finished, awaiting Omar's review, reported finished 27 September 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come."
  },
  {
   "id": "GL-087",
   "title": "Employee record depth — employee number, office / division, default cost code, union name and code, payroll group, temp-labour flag, write-ups, documents on the man, linked assets, per-employee PIN flags; the emergency contact alone is GL-003",
   "wave": "gl-wave1-people",
   "recordedState": "Done, waiting for review",
   "status5": "completed",
   "status5Word": "Completed",
   "status5Via": "canonical GL-087: state review, waiting on none",
   "plainTitle": "Employee record depth — employee number, office / division, default cost code, union…",
   "outcome": "Completed on demo data: built and finished, awaiting Omar's review, reported finished 27 September 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come."
  },
  {
   "id": "GL-088",
   "title": "Cert photo on file — upload a picture of the actual ticket so the cert name on the scan opens the paper; Makki holds numbers and issuers only (the wider certificates-page depth is GL-099)",
   "wave": "gl-wave1-people",
   "recordedState": "Done, waiting for review",
   "status5": "completed",
   "status5Word": "Completed",
   "status5Via": "canonical GL-088: state review, waiting on none",
   "plainTitle": "Cert photo on file — upload a picture of the actual ticket so the cert name on the scan…",
   "outcome": "Completed on demo data: built and finished, awaiting Omar's review, reported finished 27 September 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come."
  },
  {
   "id": "GL-028",
   "title": "Skills matrix and filter-by-skill dispatch — a skills list per man on top of the ticket list (Suncor orientation, a school background check) and a filter on the schedule board",
   "wave": "gl-wave1-people",
   "recordedState": "Done, waiting for review",
   "status5": "completed",
   "status5Word": "Completed",
   "status5Via": "canonical GL-028: state review, waiting on none",
   "plainTitle": "Skills matrix and filter-by-skill dispatch — a skills list per man on top of the ticket…",
   "outcome": "Completed on demo data: built and finished, awaiting Omar's review, reported finished 27 September 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come."
  },
  {
   "id": "GL-027",
   "title": "Employee safety scorecards — not present anywhere in the portal",
   "wave": "gl-wave1-people",
   "recordedState": "Done, waiting for review",
   "status5": "completed",
   "status5Word": "Completed",
   "status5Via": "canonical GL-027: state review, waiting on none",
   "plainTitleCurrent": "Safety scorecards on each man's record, in the owner's login",
   "capability": "a Safety scorecards tab sits on each man's record in the owner's login; no other login receives it.",
   "titleWords": {
    "was": "Employee safety scorecards — not present anywhere in the portal (GO_LIVE.md row GL-027, written 2026-09-26 before the build)",
    "source": "hive/checks/2026-09-27_gl-wave1-people.md criteria 51 and 59 (GL-027 proven at 1440 and 390; the suite's lines name the safety scorecard), graded 2026-09-27; GO_LIVE.md row GL-027 state Built; portal/app-people2.js — the Safety scorecards tab, owner only (read 2026-11-07)"
   },
   "plainTitle": "Safety scorecards on each man's record, in the owner's login",
   "outcome": "Completed on demo data: a Safety scorecards tab sits on each man's record in the owner's login; no other login receives it.",
   "next": "Nothing further to build here; the final review on evidence is still to come."
  },
  {
   "id": "GL-029",
   "title": "Disciplinary records — not present",
   "wave": "gl-wave1-people",
   "recordedState": "Done, waiting for review",
   "status5": "completed",
   "status5Word": "Completed",
   "status5Via": "canonical GL-029: state review, waiting on none",
   "plainTitleCurrent": "Disciplinary records in the conduct file on each man's record, owner's login only",
   "capability": "the conduct file on each man's record holds write-ups and disciplinary records (final warning, suspension, dismissal); owner's login only.",
   "titleWords": {
    "was": "Disciplinary records — not present (GO_LIVE.md row GL-029, written 2026-09-26 before the build)",
    "source": "hive/checks/2026-09-27_gl-wave1-people.md criteria 52 and 60 (GL-029 proven at 1440 and 390; the suite's lines name the disciplinary record and the owner), graded 2026-09-27; GO_LIVE.md row GL-029 state Built; portal/app-people2.js — the Write-ups & disciplinary tab, owner only (read 2026-11-07)"
   },
   "plainTitle": "Disciplinary records in the conduct file on each man's record, owner's login only",
   "outcome": "Completed on demo data: the conduct file on each man's record holds write-ups and disciplinary records (final warning, suspension, dismissal); owner's login…",
   "next": "Nothing further to build here; the final review on evidence is still to come."
  },
  {
   "id": "GL-093",
   "title": "Export employees to CSV, and a bulk download of all QR codes; CSV export exists on Payroll only and codes come one at a time",
   "wave": "gl-wave1-people",
   "recordedState": "Done, waiting for review",
   "status5": "completed",
   "status5Word": "Completed",
   "status5Via": "canonical GL-093: state review, waiting on none",
   "plainTitle": "Export employees to CSV, and a bulk download of all QR codes; CSV export exists on…",
   "outcome": "Completed on demo data: the employee list exports to a spreadsheet file and every worker code downloads in one go, on demo data",
   "next": "Nothing further to build here; the final review on evidence is still to come."
  },
  {
   "id": "GL-004",
   "title": "Editing the list of cert types — a small admin screen over the certs.js types",
   "wave": "gl-wave1-people",
   "recordedState": "Done, waiting for review",
   "status5": "completed",
   "status5Word": "Completed",
   "status5Via": "canonical GL-004: state review, waiting on none",
   "plainTitle": "Editing the list of cert types — a small admin screen over the types",
   "outcome": "Completed on demo data: built and finished, awaiting Omar's review, reported finished 27 September 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come."
  },
  {
   "id": "GL-059",
   "title": "Estimator and The Books on mock data — open build work, nobody blocked; the seats themselves are GL-057 and GL-058, off the board until they can work",
   "wave": "gl-seats",
   "recordedState": "Complete",
   "status5": "completed",
   "status5Word": "Completed",
   "status5Via": "canonical GL-059: state complete, waiting on none",
   "plainTitle": "Estimator and The Books on mock data — open build work, nobody blocked; the seats…",
   "outcome": "Completed on demo data: the Estimator and The Books seats are built and open from the app's own navigation on demo data",
   "next": "Nothing further to build here; the final review on evidence is still to come."
  },
  {
   "id": "GL-012",
   "title": "An \"add\" form for an asset and for an inventory line — every list in the app can be read, searched and filtered; almost none of them can be added to",
   "wave": "gl-wave2-forms",
   "recordedState": "Done, waiting for review",
   "status5": "completed",
   "status5Word": "Completed",
   "status5Via": "canonical GL-012: state review, waiting on none",
   "plainTitle": "An \"add\" form for an asset and for an inventory line — every list in the app can be…",
   "outcome": "Completed on demo data: an asset and an inventory line can each be added from their own form, and the new line shows in the list, on demo data",
   "next": "Nothing further to build here; the final review on evidence is still to come."
  },
  {
   "id": "GL-002",
   "title": "Question templates per project: you can attach a template to a job and answer it, but nothing in the app creates or edits one — still needs a template builder",
   "wave": "gl-wave2-forms",
   "recordedState": "Done, waiting for review",
   "status5": "completed",
   "status5Word": "Completed",
   "status5Via": "canonical GL-002: state review, waiting on none",
   "plainTitle": "Question templates per project: you can attach a template to a job and answer it, but…",
   "outcome": "Completed on demo data: a question template can be created and edited in the app, then attached to a job and answered, on demo data",
   "next": "Nothing further to build here; the final review on evidence is still to come."
  },
  {
   "id": "GL-007",
   "title": "Building your own inspection question sets (an inspection-template builder), and an asbestos-specific inspection checklist (manometer reading, two-stage waste load-out, AHERA credential check)",
   "wave": "gl-wave2-forms",
   "recordedState": "Done, waiting for review",
   "status5": "completed",
   "status5Word": "Completed",
   "status5Via": "canonical GL-007: state review, waiting on none",
   "plainTitle": "Building your own inspection question sets (an inspection-template builder), and an…",
   "outcome": "Completed on demo data: built and finished, awaiting Omar's review, reported finished 27 September 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come."
  },
  {
   "id": "GL-006",
   "title": "SDS from an asset scan — link a document to an asset and put it on the scan page",
   "wave": "gl-wave2-forms",
   "recordedState": "Done, waiting for review",
   "status5": "completed",
   "status5Word": "Completed",
   "status5Via": "canonical GL-006: state review, waiting on none",
   "plainTitle": "SDS from an asset scan — link a document to an asset and put it on the scan page",
   "outcome": "Completed on demo data: built and finished, awaiting Omar's review, reported finished 27 September 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come."
  },
  {
   "id": "GL-086",
   "title": "Abatement procedure checklist on the daily — install criticals, negative pressure, construct decon, pre clean, cover fixed objects, containment, removal, bag out, final clean, clearance, tear down, demob; plus cleaning verification and cloths used. The Checker calls it the most abatement-specific thing in the whole demo; the containment log itself is GL-017",
   "wave": "gl-wave2-forms",
   "recordedState": "Done, waiting for review",
   "status5": "completed",
   "status5Word": "Completed",
   "status5Via": "canonical GL-086: state review, waiting on none",
   "plainTitle": "Abatement procedure checklist on the daily — install criticals, negative pressure…",
   "outcome": "Completed on demo data: built and finished, awaiting Omar's review, reported finished 27 September 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come."
  },
  {
   "id": "GL-036",
   "title": "Meal / break attestation, and the \"Were you injured?\" question, on the end-of-day verify",
   "wave": "gl-wave2-forms",
   "recordedState": "Done, waiting for review",
   "status5": "completed",
   "status5Word": "Completed",
   "status5Via": "canonical GL-036: state review, waiting on none",
   "plainTitle": "Meal / break attestation, and the \"Were you injured?\" question, on the end-of-day verify",
   "outcome": "Completed on demo data: built and finished, awaiting Omar's review, reported finished 27 September 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come."
  },
  {
   "id": "GL-030",
   "title": "Roll Call — a real-time \"who has clocked in\" count with a link on the dashboard, and a no-show flag; the dashboard shows \"Who's on site today\" from Start Day but no Roll Call link — Built 2026-09-27 (gl-wave3-board), live v30-admin 2026-10-03",
   "wave": "gl-wave3-board",
   "recordedState": "Done, waiting for review",
   "status5": "completed",
   "status5Word": "Completed",
   "status5Via": "canonical GL-030: state review, waiting on none",
   "plainTitle": "Roll Call — a real-time \"who has clocked in\" count with a link on the dashboard, and a…",
   "outcome": "Completed on demo data: built and finished, awaiting Omar's review, reported finished 27 September 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come."
  },
  {
   "id": "GL-031",
   "title": "Double-booking warning in scheduling — an alert when the same employee or asset is assigned to two jobs in the same window; and the crew-projected vs crew-scheduled under-crewed warning that goes red — Built 2026-09-27 (gl-wave3-board), live v30-admin 2026-10-03",
   "wave": "gl-wave3-board",
   "recordedState": "Done, waiting for review",
   "status5": "completed",
   "status5Word": "Completed",
   "status5Via": "canonical GL-031: state review, waiting on none",
   "plainTitle": "Double-booking warning in scheduling — an alert when the same employee or asset is…",
   "outcome": "Completed on demo data: built and finished, awaiting Omar's review, reported finished 27 September 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come."
  },
  {
   "id": "GL-032",
   "title": "Equipment on the schedule — assets assigned to jobs in the Gantt / week view; the scheduling board handles crews, not equipment — Built 2026-09-27 (gl-wave3-board), live v30-admin 2026-10-03",
   "wave": "gl-wave3-board",
   "recordedState": "Done, waiting for review",
   "status5": "completed",
   "status5Word": "Completed",
   "status5Via": "canonical GL-032: state review, waiting on none",
   "plainTitle": "Equipment on the schedule — assets assigned to jobs in the Gantt / week view; the…",
   "outcome": "Completed on demo data: built and finished, awaiting Omar's review, reported finished 27 September 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come."
  },
  {
   "id": "GL-016",
   "title": "Fieldflo dashboard rows 4–6 — the three panels after Today's projects, Nearing bid hours and Certificates expiring on their six-panel dashboard (rows 1–3 landed 09-21) — Built 2026-09-27 (gl-wave3-board), live v30-admin 2026-10-03",
   "wave": "gl-wave3-board",
   "recordedState": "Done, waiting for review",
   "status5": "completed",
   "status5Word": "Completed",
   "status5Via": "canonical GL-016: state review, waiting on none",
   "plainTitle": "Fieldflo dashboard rows 4–6 — the three panels after Today's projects, Nearing bid hours…",
   "outcome": "Completed on demo data: the dashboard carries all six panels, the three later ones beside the first three, on demo data",
   "next": "Nothing further to build here; the final review on evidence is still to come."
  },
  {
   "id": "GL-089",
   "title": "Dashboard stat tiles — days without injury, client count, user count, contracts-in-progress value — Built 2026-09-27 (gl-wave3-board), live v30-admin 2026-10-03",
   "wave": "gl-wave3-board",
   "recordedState": "Done, waiting for review",
   "status5": "completed",
   "status5Word": "Completed",
   "status5Via": "canonical GL-089: state review, waiting on none",
   "plainTitle": "Dashboard stat tiles — days without injury, client count, user count…",
   "outcome": "Completed on demo data: built and finished, awaiting Omar's review, reported finished 27 September 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come."
  },
  {
   "id": "GL-085",
   "title": "Equipment location map — where every vehicle, rental and piece of heavy equipment is, with rentals / heavy-equipment toggles and per-asset popups; Makki's map shows job sites, not assets — Built 2026-09-27 (gl-wave3-board), live v30-admin 2026-10-03",
   "wave": "gl-wave3-board",
   "recordedState": "Done, waiting for review",
   "status5": "completed",
   "status5Word": "Completed",
   "status5Via": "canonical GL-085: state review, waiting on none",
   "plainTitle": "Equipment location map — where every vehicle, rental and piece of heavy equipment is…",
   "outcome": "Completed on demo data: built and finished, awaiting Omar's review, reported finished 27 September 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come."
  },
  {
   "id": "GL-080",
   "title": "Equipment maintenance and inspection engine — nearing-maintenance by trigger miles / km / hours, next inspections due, equipment corrective actions, an inspection form driven by equipment type with odometer, hours and OK / NO / N/A per line; the repair history per machine is live (GL-008) — Built 2026-09-27 (gl-wave3-board), live v30-admin 2026-10-03",
   "wave": "gl-wave3-board",
   "recordedState": "Done, waiting for review",
   "status5": "completed",
   "status5Word": "Completed",
   "status5Via": "canonical GL-080: state review, waiting on none",
   "plainTitle": "Equipment maintenance and inspection engine — nearing-maintenance by trigger miles / km…",
   "outcome": "Completed on demo data: built and finished, awaiting Omar's review, reported finished 27 September 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come."
  },
  {
   "id": "GL-090",
   "title": "Auditors on the JHA — up to 10 extra people signing the safety meeting with their own PIN — Built 2026-09-27 (gl-wave4-jha), live v30-admin 2026-10-03",
   "wave": "gl-wave4-jha",
   "recordedState": "Done, waiting for review",
   "status5": "completed",
   "status5Word": "Completed",
   "status5Via": "canonical GL-090: state review, waiting on none",
   "plainTitle": "Auditors on the JHA — up to 10 extra people signing the safety meeting with their own…",
   "outcome": "Completed on demo data: built and finished, awaiting Omar's review, reported finished 27 September 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come."
  },
  {
   "id": "GL-092",
   "title": "Evacuation plan section on the JHA, pulled from the project details — Built 2026-09-27 (gl-wave4-jha), live v30-admin 2026-10-03",
   "wave": "gl-wave4-jha",
   "recordedState": "Done, waiting for review",
   "status5": "completed",
   "status5Word": "Completed",
   "status5Via": "canonical GL-092: state review, waiting on none",
   "plainTitle": "Evacuation plan section on the JHA, pulled from the project details — Built…",
   "outcome": "Completed on demo data: the job hazard sheet carries an evacuation plan section filled from the project's own details, on demo data",
   "next": "Nothing further to build here; the final review on evidence is still to come."
  },
  {
   "id": "GL-082",
   "title": "Live weather and heat index on the JHA — current and forecast temperature, wind, humidity, a heat index, each with a \"have you reviewed this with the crew\" question; no earlier file records it (Part 4a) — Built 2026-09-27 (gl-wave4-jha), live v30-admin 2026-10-03",
   "wave": "gl-wave4-jha",
   "recordedState": "Done, waiting for review",
   "status5": "completed",
   "status5Word": "Completed",
   "status5Via": "canonical GL-082: state review, waiting on none",
   "plainTitle": "Live weather and heat index on the JHA — current and forecast temperature, wind…",
   "outcome": "Completed on demo data: built and finished, awaiting Omar's review, reported finished 27 September 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come."
  },
  {
   "id": "GL-081",
   "title": "Voice into the daily — the crew talks into the daily report instead of typing, in any language; the foreman's voice note by text (tools/daily.cjs) is the hive's version, not the portal's — Built 2026-09-27 (gl-wave4-jha), live v30-admin 2026-10-03",
   "wave": "gl-wave4-jha",
   "recordedState": "Done, waiting for review",
   "status5": "completed",
   "status5Word": "Completed",
   "status5Via": "canonical GL-081: state review, waiting on none",
   "plainTitle": "Voice into the daily — the crew talks into the daily report instead of typing, in any…",
   "outcome": "Completed on demo data: built and finished, awaiting Omar's review, reported finished 27 September 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come."
  },
  {
   "id": "GL-079",
   "title": "Any language — a translate control that flips the whole portal, and a per-form globe, so a bilingual crew reads its own paperwork; nothing in the portal is translatable (the Checker's Part 4a: Fieldflo's is a Google Translate widget, not a language pack) — Built 2026-09-27 (gl-wave4-jha), live v30-admin 2026-10-03",
   "wave": "gl-wave4-jha",
   "recordedState": "Done, waiting for review",
   "status5": "completed",
   "status5Word": "Completed",
   "status5Via": "canonical GL-079: state review, waiting on none",
   "plainTitle": "Any language — a translate control that flips the whole portal, and a per-form globe, so…",
   "outcome": "Completed on demo data: built and finished, awaiting Omar's review, reported finished 27 September 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come."
  },
  {
   "id": "GL-013",
   "title": "Ten project-manager seats — a project-manager role between Owner and Site lead: his own jobs, his own crews, budget but not company profit; turns Team & Access from five demo logins into a roster — Built 2026-09-27 (gl-wave5-admin), live v30-admin 2026-10-03",
   "wave": "gl-wave5-admin",
   "recordedState": "Done, waiting for review",
   "status5": "completed",
   "status5Word": "Completed",
   "status5Via": "canonical GL-013: state review, waiting on none",
   "plainTitle": "Ten project-manager seats — a project-manager role between Owner and Site lead: his own…",
   "outcome": "Completed on demo data: built and finished, awaiting Omar's review, reported finished 27 September 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come."
  },
  {
   "id": "GL-083",
   "title": "Reporting Center — 18 named exportable reports (asset, job costing, expense, per diem, T&M, change order, waste, warehouse, project inventory, CRM, incident, injury, inspection, equipment log, form) — Built 2026-09-27 (gl-wave5-admin), live v30-admin 2026-10-03",
   "wave": "gl-wave5-admin",
   "recordedState": "Done, waiting for review",
   "status5": "completed",
   "status5Word": "Completed",
   "status5Via": "canonical GL-083: state review, waiting on none",
   "plainTitle": "Reporting Center — 18 named exportable reports (asset, job costing, expense, per diem…",
   "outcome": "Completed on demo data: built and finished, awaiting Omar's review, reported finished 27 September 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come."
  },
  {
   "id": "GL-084",
   "title": "Admin section — form sequencer, export builder, email templates and groups, email log, imports, timesheet adjuster, portal admin; the email pieces stay on the owner's rail — Built 2026-09-27 (gl-wave5-admin), live v30-admin 2026-10-03",
   "wave": "gl-wave5-admin",
   "recordedState": "Done, waiting for review",
   "status5": "completed",
   "status5Word": "Completed",
   "status5Via": "canonical GL-084: state review, waiting on none",
   "plainTitle": "Admin section — form sequencer, export builder, email templates and groups, email log…",
   "outcome": "Completed on demo data: built and finished, awaiting Omar's review, reported finished 27 September 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come."
  },
  {
   "id": "GL-094",
   "title": "Company page, Messages page, and the three-dots admin customisation on every list — Built 2026-09-27 (gl-wave5-admin), live v30-admin 2026-10-03",
   "wave": "gl-wave5-admin",
   "recordedState": "Done, waiting for review",
   "status5": "completed",
   "status5Word": "Completed",
   "status5Via": "canonical GL-094: state review, waiting on none",
   "plainTitle": "Company page, Messages page, and the three-dots admin customisation on every list…",
   "outcome": "Completed on demo data: built and finished, awaiting Omar's review, reported finished 27 September 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come."
  },
  {
   "id": "GL-091",
   "title": "Submit a feature idea / what's new — the in-product channel Dan used to prove they listen — Built 2026-09-27 (gl-wave5-admin), live v30-admin 2026-10-03",
   "wave": "gl-wave5-admin",
   "recordedState": "Done, waiting for review",
   "status5": "completed",
   "status5Word": "Completed",
   "status5Via": "canonical GL-091: state review, waiting on none",
   "plainTitle": "Submit a feature idea / what's new — the in-product channel Dan used to prove they…",
   "outcome": "Completed on demo data: a feature idea can be sent in from inside the app and the what-is-new notes read in the same place, on demo data",
   "next": "Nothing further to build here; the final review on evidence is still to come."
  },
  {
   "id": "GL-021",
   "title": "A texted link that opens with no app, no account and no login — and still works when he taps it hours later: a signed, expiring web link per man per day and a page that renders with no session — Built 2026-09-27 (gl-wave5-admin), live v30-admin 2026-10-03",
   "wave": "gl-wave5-admin",
   "recordedState": "Done, waiting for review",
   "status5": "completed",
   "status5Word": "Completed",
   "status5Via": "canonical GL-021: state review, waiting on none",
   "plainTitle": "A texted link that opens with no app, no account and no login — and still works when he…",
   "outcome": "Completed on demo data: built and finished, awaiting Omar's review, reported finished 27 September 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come."
  },
  {
   "id": "GL-015",
   "title": "A CSV import where there is no integration — load people, customers and jobs from a spreadsheet; the backstop named on the QuickBooks screen — Built 2026-09-27 (gl-wave5-admin), live v30-admin 2026-10-03",
   "wave": "gl-wave5-admin",
   "recordedState": "Done, waiting for review",
   "status5": "completed",
   "status5Word": "Completed",
   "status5Via": "canonical GL-015: state review, waiting on none",
   "plainTitle": "A CSV import where there is no integration — load people, customers and jobs from a…",
   "outcome": "Completed on demo data: built and finished, awaiting Omar's review, reported finished 27 September 2026.",
   "next": "Nothing further to build here; the final review on evidence is still to come."
  },
  {
   "id": "GL-077",
   "title": "\"Timesheet head start + CSV import\" aborted at ~46 min, no output, no reason — re-run, capture why — Built 2026-09-27 (gl-wave5-admin), live v30-admin 2026-10-03",
   "wave": "gl-wave5-admin",
   "recordedState": "Done, waiting for review",
   "status5": "completed",
   "status5Word": "Completed",
   "status5Via": "canonical GL-077: state review, waiting on none",
   "plainTitleCurrent": "Timesheet head start from the day's board, plus a CSV import of people, customers and jobs",
   "capability": "the day's timesheet starts from the men on the schedule board, and a CSV import loads people, customers and jobs from a spreadsheet.",
   "titleWords": {
    "was": "\"Timesheet head start + CSV import\" aborted at ~46 min, no output, no reason — re-run, capture why — Built 2026-09-27 (gl-wave5-admin), live v30-admin 2026-10-03 (GO_LIVE.md row GL-077: the note of the aborted first run, kept in the title)",
    "source": "hive/checks/2026-09-27_gl-wave5-admin.md criteria 65, 73 and 74 (GL-077 / GL-001 proven at 1440 and 390: the pull from the schedule board, the men, the man list; GL-015 the import), graded 2026-09-27; GO_LIVE.md rows GL-077, GL-001 and GL-015 state Built, live v30-admin 2026-10-03"
   },
   "plainTitle": "Timesheet head start from the day's board, plus a CSV import of people, customers and jobs",
   "outcome": "Completed on demo data: the day's timesheet starts from the men on the schedule board, and a CSV import loads people, customers and jobs from a spreadsheet.",
   "next": "Nothing further to build here; the final review on evidence is still to come."
  },
  {
   "id": "GL-037",
   "title": "HQ dashboard across branches — The owner said five companies (@2:33), Dan mentioned it at @24:23. _2026-10-04: Built on Omar's word of 04:49 UTC (\"the 6 not built can you build it\"), which supersedes his 09-15 close — an owner-only HQ tab rolling jobs and money up by branch with a branch switcher; branch labels are demo labels only, the real branches arrive with the owner's answers (gl-notbuilt6, PASS 96/0, v32-nb6)._",
   "wave": "gl-037",
   "recordedState": "Done, waiting for review",
   "status5": "completed",
   "status5Word": "Completed",
   "status5Via": "canonical GL-037: state review, waiting on none",
   "plainTitleCurrent": "HQ tab for the owner: jobs and money rolled up by branch, on demo branch labels",
   "capability": "an owner-only HQ tab rolls jobs and money up by branch with a branch switcher; the branch names are demo labels until the owner names his.",
   "titleWords": {
    "was": "HQ dashboard across branches — The owner said five companies (@2:33), Dan mentioned it at @24:23. _2026-10-04: Built on Omar's word of 04:49 UTC …_ (GO_LIVE.md row GL-037: meeting stamps and the dated note, kept in the title)",
    "source": "hive/checks/2026-10-04_gl-notbuilt6.md (PASS 96/0, graded 2026-10-04 06:43 UTC); GO_LIVE.md row GL-037 state Built on Omar's 2026-10-04 04:49 UTC word (vault/topics/decisions/build the six not built.md); vault/topics/decisions/one company only.md, Now-block 2026-10-04"
   },
   "plainTitle": "HQ tab for the owner: jobs and money rolled up by branch, on demo branch labels",
   "outcome": "Completed on demo data: an owner-only HQ tab rolls jobs and money up by branch with a branch switcher; the branch names are demo labels until the owner names…",
   "next": "Nothing further to build here; the final review on evidence is still to come."
  }
 ],
 "golive_build_summary": {
  "completed": 36,
  "notDone": 0,
  "needsOmar": 0,
  "needsAli": 0,
  "needsBoth": 0,
  "pct": 100,
  "recordedFourStates": {
   "complete": 1,
   "doneWaitingReview": 35,
   "inProgress": 0,
   "notStarted": 0
  }
 },
 "questions": [
  {
   "n": 1,
   "key": "textline",
   "ids": [
    "V07·codex",
    "V54·codex",
    "GL-067",
    "GL-105",
    "V4",
    "V91",
    "V136",
    "V137",
    "V138"
   ],
   "question": "Do we buy the texting number and switch on the labourer text line?",
   "why": "About $10–20 a month. It unlocks the whole text line: a labourer verifies his day and the safety talk by text with no login, the texted link opens in a plain browser with no account, failed texts are caught, and the crew's week goes to each man's phone. Buying the number and switching the line on are two separate clicks here: buying it sends nothing, and nothing goes out until the second one.",
   "choices": [
    {
     "value": "buy",
     "label": "Buy the number — nothing is switched on by it"
    },
    {
     "value": "on",
     "label": "Switch the labourer text line on — the number is already bought"
    },
    {
     "value": "later",
     "label": "Not yet — keep it built but off"
    },
    {
     "value": "no",
     "label": "No — drop the text line"
    }
   ],
   "cards": [
    "office-textline"
   ],
   "covers": [
    {
     "id": "V07·codex",
     "title": "Worker verification without full portal use",
     "state": "blocked",
     "waitingOn": "Omar",
     "card": "office-textline",
     "status5": "needs-omar"
    },
    {
     "id": "V54·codex",
     "title": "SMS failure detection and recovery",
     "state": "blocked",
     "waitingOn": "Omar",
     "card": "office-textline",
     "status5": "needs-omar"
    },
    {
     "id": "GL-067",
     "title": "Ask 8 — A texting line, the crew's numbers, and the wording — the only ask that costs money; unblocks labourers-by-text",
     "state": "blocked",
     "waitingOn": "Both",
     "card": "office-textline",
     "status5": "needs-both"
    },
    {
     "id": "GL-105",
     "title": "\"Send Verify SMS\" and \"Mark week approved & notify\" from payroll — the labourer verifies his week by text and is told when it is approved",
     "state": "blocked",
     "waitingOn": "Omar",
     "card": "office-textline",
     "status5": "needs-omar"
    },
    {
     "id": "V4",
     "title": "Daily labourers verify time and safety but never log into the platform",
     "state": "blocked",
     "waitingOn": "Both",
     "card": "office-textline",
     "status5": "needs-both"
    },
    {
     "id": "V91",
     "title": "The labourer gets a text within seconds asking for his location (optional)",
     "state": "blocked",
     "waitingOn": "Both",
     "card": "office-textline",
     "status5": "needs-both"
    },
    {
     "id": "V136",
     "title": "A link we text a man must open in the phone's plain browser — no app to install. The owner tapped Fieldflo's texts live on the call: \"I have, but when I'm clicking on them, they're not going anywhere because it I'm not connected to the... Fieldflo app\"",
     "state": "blocked",
     "waitingOn": "Both",
     "card": "office-textline",
     "status5": "needs-both"
    },
    {
     "id": "V137",
     "title": "That same link must open with no account and no login — \"kept saying that I'm not connected to the app\"",
     "state": "blocked",
     "waitingOn": "Both",
     "card": "office-textline",
     "status5": "needs-both"
    },
    {
     "id": "V138",
     "title": "And it must still be valid when he taps it — \"and the link is not valid\"; asked \"Did you see the JHA?\" he answered \"No.\"",
     "state": "blocked",
     "waitingOn": "Both",
     "card": "office-textline",
     "status5": "needs-both"
    }
   ],
   "fallback": false,
   "rq": false,
   "openBecause": "Buying the texting number is money and a go on sending; no dated decision on this line names a day or who pays, so the rows still wait on your word.",
   "decisionTrace": "O2 — Omar 2026-10-03 00:31 UTC \"Yes they get outbound lines but thats a later thing\" (vault/topics/people/Omar.md): yes in principle, no day, no number; the canonical rows still read waiting on Omar (v2.4, 2026-10-31)",
   "splitFrom": null,
   "plainTitle": "The texting number",
   "rewordedFrom": {
    "n": 1,
    "question": "Do we buy the texting number and switch on the labourer text line?",
    "source": "main BUILDER DELTA 2026-11-07T18:20Z carrying Omar 18:15Z Telegram 2186 (hive/EXECUTION_LOG.md); pin v2.1.0 (hive/checks/2026-11-07_requirements-tasks-b3.md, 2026-11-07) — the text is unchanged; its rows moved: O2 (merged into GL-067 in the tracker's archive) leaves the list by the archive rule and is wanted through its survivor, which sits here"
   },
   "rewordedAgain": null,
   "whyOnlyOmar": "The texting number is a monthly cost and the switch that lets the app send texts; both are his to say yes to, and no dated word on this line names a day, a number or who pays.",
   "whyOnlyOmarSources": [
    "Omar 2026-10-03 00:31 UTC — \"Yes they get outbound lines but thats a later thing\" (vault/topics/people/Omar.md): yes in principle, no day, no number, no word on who pays",
    "RULE #1 (AGENTS.md, standing since Omar 2026-09-10 19:17 UTC): nothing sends, publishes or contacts anyone without Omar's explicit OK",
    "canonical accounting v2.4, generated 2026-10-31 (materials/canonical/2026-10-31_canonical-tasks.v2.4.json): the rows under this question read waiting on Omar or on both"
   ],
   "supersededBy": null,
   "appliedAnswers": [],
   "decision": "Whether Makki buys the texting number, about $10–20 a month, and separately whether to activate the labourer text line: buying the number does not activate it, and that is a second decision.",
   "prerequisites": [
    "The owner's yes to the texting number (his own row on this page).",
    "The two text wordings, morning and end of day, OK'd by the owner."
   ],
   "artifact": null,
   "sources": [
    "main's BUILDER CONTINUATION of 2026-11-08 carrying Codex's independent live re-review of the same date under Omar's standing authority, relayed by main (hive/EXECUTION_LOG.md): the question's CURRENT sentence must agree with what the build does and must ask exactly one thing. tasks-correction-2 v2.0.0, 2026-11-08."
   ],
   "proposal": null,
   "freedPart": null,
   "sendScope": null,
   "outcome": "Open: 9 rows wait on this one answer; nothing moves on them until Omar gives it.",
   "next": "Pick a choice or type an answer and save it; it stays on this device until you copy all answers into the line.",
   "questionShown": "Do we buy the texting number and switch on the labourer text line?",
   "whyShown": "About $10–20 a month. It unlocks the whole text line: a labourer verifies his day and the safety talk by text with no login, the texted link opens in a plain browser with no account, failed texts are caught, and the crew's week goes to each man's phone. Buying the number and switching the line on are two separate clicks here: buying it sends nothing, and nothing goes out until the second one.",
   "unlocks": "Your answer moves 9 rows: Worker verification without full portal use; SMS failure detection and recovery and 7 more.",
   "unlocksShown": "Your answer moves 9 rows: Worker verification without full portal use; SMS failure detection and recovery and 7 more."
  },
  {
   "n": 2,
   "key": "messages",
   "ids": [
    "GL-020",
    "V7",
    "V98",
    "V109"
   ],
   "question": "May the app send the two daily crew texts — the morning line-up and the end-of-day report — in the wordings the owner OKs, with every other automatic message staying off?",
   "why": "These four rows are the two daily crew texts themselves. The morning line-up is the text that goes out before work, and the safety-talk sign-off a man signs on his own phone is the part of it he answers; the end-of-day confirm is his hours at the end of the shift. Each man's hours for the week going to his phone is a different send and is asked on its own question, not here. Every other automatic message is asked on its own question below.",
   "choices": [
    {
     "value": "owner",
     "label": "Yes — the morning line-up with its safety-talk sign-off before work, and the hours confirm at the end of the day, both by text to each man, after the owner OKs the wording"
    },
    {
     "value": "manual",
     "label": "No — the office sends by hand"
    },
    {
     "value": "later",
     "label": "Not yet"
    }
   ],
   "cards": [],
   "covers": [
    {
     "id": "GL-020",
     "title": "The labourer text line — a labourer who never logs in at all: the safety-talk sign-off text before work and the end-of-day hours confirm (rows 7, 82, 86, 94)…",
     "state": "blocked",
     "waitingOn": "Both",
     "card": "office-textline",
     "status5": "needs-both"
    },
    {
     "id": "V7",
     "title": "Each employee sent his own approval by text: his time and hours for the day and the week, \"Were you injured? Does everything look good?\"",
     "state": "partial",
     "waitingOn": "Both",
     "card": "office-textline",
     "status5": "needs-both"
    },
    {
     "id": "V98",
     "title": "Everybody on the timesheet verifies he understood the safety meeting — the whole meeting goes to his phone by text, translatable, signed on his own phone",
     "state": "partial",
     "waitingOn": "Both",
     "card": "office-textline",
     "status5": "needs-both"
    },
    {
     "id": "V109",
     "title": "Everyone verifies by text at the end of the day: time correct, meals, injured, \"everything looks good\"",
     "state": "partial",
     "waitingOn": "Both",
     "card": "office-textline",
     "status5": "needs-both"
    }
   ],
   "fallback": false,
   "rq": false,
   "openBecause": "Every automatic send from the app is held by the no-send rule until you say which sends are allowed and who signs the wording off; no dated decision lifts it, and the rows under this question are the morning line-up with its safety-talk sign-off and the end-of-day hours confirm alone.",
   "decisionTrace": "RULE #1 (AGENTS.md, standing since 2026-09-10): nothing sends without Omar's explicit OK; the canonical rows read waiting on Omar (v2.4, 2026-10-31)",
   "splitFrom": null,
   "plainTitle": "The two daily crew texts",
   "rewordedFrom": {
    "n": 2,
    "question": "May the app send messages on its own — crew broadcasts, each man's week to his phone, form alerts and the email digest?",
    "source": "main BUILDER DELTA 2026-11-07T18:20Z carrying Omar 18:15Z Telegram 2186 (hive/EXECUTION_LOG.md); pin v2.1.0 (hive/checks/2026-11-07_requirements-tasks-b3.md, 2026-11-07) — the text is unchanged; its rows moved: V16 (the crew broadcast) now reads its canonical row GL-022 by the row's own alias line instead of V16·codex by a numeric suffix, and lists here with it; Omar's independent live review of the All Tasks page, 2026-11-07 22:13 UTC Telegram 2233, carried by main's Builder order 2026-11-07T23:10Z (hive/EXECUTION_LOG.md); pin v2.3.0 (hive/checks/2026-11-07_requirements-tasks-b3.md, 2026-11-07) (bounded to the two daily crew texts; no blanket send consent)"
   },
   "rewordedAgain": null,
   "whyOnlyOmar": "Every automatic send from the app is held by the no-send rule until Omar says which sends are allowed and who signs the wording; nobody else on this line can lift it.",
   "whyOnlyOmarSources": [
    "RULE #1 (AGENTS.md, standing since Omar 2026-09-10 19:17 UTC): nothing sends, publishes or contacts anyone without Omar's explicit OK",
    "canonical accounting v2.4, generated 2026-10-31 (materials/canonical/2026-10-31_canonical-tasks.v2.4.json): the rows under this question read waiting on Omar or on both",
    "Omar 2026-10-03 00:31 UTC — the outbound line is \"a later thing\" (vault/topics/people/Omar.md); no later dated word lifts the send rule"
   ],
   "supersededBy": null,
   "appliedAnswers": [],
   "decision": "Whether the app itself sends the two daily crew texts once the owner has OK'd their wording; every other automatic message stays off until it is asked about on its own row.",
   "prerequisites": [
    "The texting number bought and switched on (the texting-number question above).",
    "The owner's OK on the two wordings, morning and end of day (his own row on this page)."
   ],
   "artifact": null,
   "sources": [
    "main 2026-11-08T03:26Z carrying Omar 2026-11-08 03:24 UTC: this question permits only the two daily crew texts, so its id set holds exactly the rows that are those two texts and every unrelated automatic send moves to its own question (tasks-correction v1.0.0)",
    "main's BUILDER CONTINUATION of 2026-11-08 carrying Codex's independent live re-review of the same date under Omar's standing authority, relayed by main (hive/EXECUTION_LOG.md): the question's CURRENT sentence must agree with what the build does and must ask exactly one thing. tasks-correction-2 v2.0.0, 2026-11-08."
   ],
   "proposal": null,
   "freedPart": null,
   "sendScope": null,
   "outcome": "Open: 4 rows wait on this one answer; nothing moves on them until Omar gives it.",
   "next": "Pick a choice or type an answer and save it; it stays on this device until you copy all answers into the line.",
   "questionShown": "May the app send the two daily crew texts — the morning line-up and the end-of-day report — in the wordings the owner OKs, with every other automatic message staying off?",
   "whyShown": "These four rows are the two daily crew texts themselves. The morning line-up is the text that goes out before work, and the safety-talk sign-off a man signs on his own phone is the part of it he answers; the end-of-day confirm is his hours at the end of the shift. Each man's hours for the week going to his phone is a different send and is asked on its own question, not here. Every other automatic message is asked on its own question below.",
   "unlocks": "Your answer moves 4 rows: The labourer text line — a labourer who never logs in at all: the…; Each employee sent his own approval by text: his time and hours for… and 2 more.",
   "unlocksShown": "Your answer moves 4 rows: The labourer text line — a labourer who never logs in at all: the…; Each employee sent his own approval by text: his time and hours for… and 2 more."
  },
  {
   "n": 3,
   "key": "office-sends",
   "ids": [
    "F07",
    "F21",
    "F38",
    "F39",
    "V12·codex",
    "V15·codex",
    "M-SMS",
    "GL-022",
    "GL-023",
    "GL-106",
    "GL-108",
    "GL-109",
    "V31",
    "V114",
    "V116",
    "V16"
   ],
   "question": "Which of the app's other automatic messages may it send at all — crew broadcasts, each man's week to his phone, form alerts, the notification digest?",
   "why": "These rows are specified or half-made and silent: every automatic send is held until you say which send is allowed. Answering this switches nothing on — each send you name still needs its wording OK'd and its switch flipped by the build. The two daily crew texts are asked on their own question above; the proposal-for-signature send is asked with the proposals question, and the certificate email with the certificates question.",
   "choices": [
    {
     "value": "none",
     "label": "None — every other automatic send stays off"
    },
    {
     "value": "named",
     "label": "Only the ones you name, one at a time"
    },
    {
     "value": "later",
     "label": "Not yet"
    }
   ],
   "cards": [
    "office-msg"
   ],
   "covers": [
    {
     "id": "F07",
     "title": "Project exception notifications",
     "state": "blocked",
     "waitingOn": "Omar",
     "card": "office-msg",
     "status5": "needs-omar"
    },
    {
     "id": "F21",
     "title": "Schedule messaging",
     "state": "blocked",
     "waitingOn": "Omar",
     "card": "office-msg",
     "status5": "needs-omar"
    },
    {
     "id": "F38",
     "title": "Automatic form distribution",
     "state": "blocked",
     "waitingOn": "Omar",
     "card": "office-msg",
     "status5": "needs-omar"
    },
    {
     "id": "F39",
     "title": "Answer triggered form alerts",
     "state": "blocked",
     "waitingOn": "Omar",
     "card": "office-msg",
     "status5": "needs-omar"
    },
    {
     "id": "V12·codex",
     "title": "Team broadcasts",
     "state": "blocked",
     "waitingOn": "Omar",
     "card": "office-msg",
     "status5": "needs-omar"
    },
    {
     "id": "V15·codex",
     "title": "Scheduled and instant notifications",
     "state": "blocked",
     "waitingOn": "Omar",
     "card": "office-msg",
     "status5": "needs-omar"
    },
    {
     "id": "M-SMS",
     "title": "Crew messages, verification and delivery recovery",
     "state": "blocked",
     "waitingOn": "Omar",
     "card": "office-msg",
     "status5": "needs-omar"
    },
    {
     "id": "GL-022",
     "title": "One message pushed to the whole crew — PPE week, the holiday party, site closed Monday — one message, everyone, at once",
     "state": "blocked",
     "waitingOn": "Omar",
     "card": "office-msg",
     "status5": "needs-omar"
    },
    {
     "id": "GL-023",
     "title": "Each man's own week sent to his own phone — Crew › My Schedule and the board's per-man preview are built; actually sending it is not, and the preview is labe…",
     "state": "blocked",
     "waitingOn": "Omar",
     "card": "office-msg",
     "status5": "needs-omar"
    },
    {
     "id": "GL-106",
     "title": "The notification digest sent as an email with Makki's logo, rather than read in the app — the Checker saw the delivered Gmail digest, ~60 rows of employee / …",
     "state": "blocked",
     "waitingOn": "Omar",
     "card": "office-msg",
     "status5": "needs-omar"
    },
    {
     "id": "GL-108",
     "title": "\"Send Forms\" in the forms bulk menu — the filled forms go out from the app",
     "state": "blocked",
     "waitingOn": "Omar",
     "card": "office-msg",
     "status5": "needs-omar"
    },
    {
     "id": "GL-109",
     "title": "Notifying the assignee of a corrective action, and notifying the warehouse manager of a failed equipment inspection",
     "state": "blocked",
     "waitingOn": "Omar",
     "card": "office-msg",
     "status5": "needs-omar"
    },
    {
     "id": "V31",
     "title": "Send each employee his own schedule to his cell or email",
     "state": "partial",
     "waitingOn": "Both",
     "card": "office-msg",
     "status5": "needs-both"
    },
    {
     "id": "V114",
     "title": "A dispatching system that sends each employee his own schedule",
     "state": "partial",
     "waitingOn": "Both",
     "card": "office-msg",
     "status5": "needs-both"
    },
    {
     "id": "V116",
     "title": "Each employee gets his assignments on his cell phone",
     "state": "partial",
     "waitingOn": "Both",
     "card": "office-msg",
     "status5": "needs-both"
    },
    {
     "id": "V16",
     "title": "Deploy one message to the whole crew by text or email (PPE week, holiday party)",
     "state": "open",
     "waitingOn": "Omar",
     "card": null,
     "status5": "needs-omar",
     "taskOf": "GL-022"
    }
   ],
   "fallback": false,
   "rq": false,
   "openBecause": "Every automatic send from the app is held by the no-send rule until Omar says which sends are allowed and who signs the wording off; no dated decision lifts it for these rows, and the two-daily-texts question does not cover them. Answering this switches nothing on by itself.",
   "decisionTrace": "the no-send rule standing since Omar 2026-09-10 19:17 UTC; the canonical rows on this plan card read waiting on Omar or on both (v2.4, 2026-10-31); split out of the two-daily-texts question by main 2026-11-08T03:26Z carrying Omar 03:24Z",
   "splitFrom": null,
   "plainTitle": "Every other automatic message",
   "rewordedFrom": null,
   "rewordedAgain": null,
   "whyOnlyOmar": "Every automatic send from the app is held by the no-send rule until Omar says which sends are allowed and who signs the wording off; nobody else on this line can lift it.",
   "whyOnlyOmarSources": [
    "RULE #1 (AGENTS.md, standing since Omar 2026-09-10 19:17 UTC): nothing sends, publishes or contacts anyone without Omar's explicit OK",
    "canonical accounting v2.4, generated 2026-10-31 (materials/canonical/2026-10-31_canonical-tasks.v2.4.json): the rows on this plan card read waiting on Omar or on both",
    "main 2026-11-08T03:26Z carrying Omar 2026-11-08 03:24 UTC: the two-daily-texts question permits only those two texts, so every other automatic send is asked here and none of them is released"
   ],
   "supersededBy": null,
   "appliedAnswers": [],
   "decision": "Which other automatic messages the app may send: none, or only the ones you name, each with the event that fires it, the channel, who it goes to and who OKs the wording.",
   "prerequisites": [
    "The wording of every send you allow, OK'd before anything goes out.",
    "The texting number or a mailbox to send from, for the sends that need one."
   ],
   "artifact": null,
   "sources": [
    "main's BUILDER CONTINUATION of 2026-11-08 carrying Codex's independent live re-review of the same date under Omar's standing authority, relayed by main (hive/EXECUTION_LOG.md): the question's CURRENT sentence must agree with what the build does and must ask exactly one thing. tasks-correction-2 v2.0.0, 2026-11-08."
   ],
   "proposal": null,
   "freedPart": null,
   "sendScope": [
    "Crew broadcast — event: when the office posts one message for the whole crew; channel: text, or email where a man has no mobile; recipients: every man on the active crew list; review: the owner OKs the wording before it goes out.",
    "Each man's own week — event: when the week's schedule is published; channel: text with a link, or email; recipients: each man, his own week and nobody else's; review: the office OKs the published week before anything is sent.",
    "Form distribution and answer-triggered alerts — event: when a form is assigned, or when an answer trips a rule; channel: email, or text for the crew; recipients: the man it is assigned to and the supervisor on that job; review: the office OKs each rule before it can fire.",
    "The notification digest — event: when the digest is cut, once a day; channel: email carrying Makki's logo; recipients: the office addresses listed on the Team page; review: the owner OKs the digest wording and that address list.",
    "Project exception notice — event: when a project trips an exception rule; channel: email; recipients: that project's own supervisor and the office; review: the office OKs the rule set before it can fire.",
    "Corrective action and failed inspection — event: when a corrective action is assigned, or an equipment inspection is failed; channel: email; recipients: the assignee, and the warehouse manager for a failed inspection; review: the office OKs the wording before anything goes out."
   ],
   "outcome": "Open: 16 rows wait on this one answer; nothing moves on them until Omar gives it.",
   "next": "Pick a choice or type an answer and save it; it stays on this device until you copy all answers into the line.",
   "questionShown": "Which of the app's other automatic messages may it send at all — crew broadcasts, each man's week to his phone, form alerts, the notification digest?",
   "whyShown": "These rows are specified or half-made and silent: every automatic send is held until you say which send is allowed. Answering this switches nothing on — each send you name still needs its wording OK'd and its switch flipped by the build. The two daily crew texts are asked on their own question above; the proposal-for-signature send is asked with the proposals question, and the certificate email with the certificates question.",
   "unlocks": "Your answer moves 16 rows: Project exception notifications; Schedule messaging and 14 more.",
   "unlocksShown": "Your answer moves 16 rows: Project exception notifications; Schedule messaging and 14 more."
  },
  {
   "n": 4,
   "key": "hosting",
   "ids": [
    "D10",
    "M-BACK",
    "O-CAPACITY",
    "O-DATA",
    "O-DOMAIN",
    "O-HOST",
    "O-RECOVERY",
    "GL-053"
   ],
   "question": "Hosting — does the app run in the owner's own account at a Makki address, or in EazyLife's account for now?",
   "why": "Decides whose account the app runs in, what address the crew types, and where the real data, the database and the backups will sit. The owner's own account is the cleaner answer; a domain is $15–20 a year if Makki does not own one. The backup, capacity, domain and recovery rows are not held behind this answer — the hive builds them on demo data either way.",
   "choices": [
    {
     "value": "owner",
     "label": "The owner's own account, at a Makki address"
    },
    {
     "value": "eazylife",
     "label": "EazyLife's account for now"
    },
    {
     "value": "ask",
     "label": "Ask the owner first"
    }
   ],
   "cards": [
    "plat-host"
   ],
   "covers": [
    {
     "id": "D10",
     "title": "Back up and export business data",
     "state": "blocked",
     "waitingOn": "Omar",
     "card": "plat-host",
     "status5": "needs-omar"
    },
    {
     "id": "M-BACK",
     "title": "Backups, restore and usable exports",
     "state": "blocked",
     "waitingOn": "Omar",
     "card": "plat-host",
     "status5": "needs-omar"
    },
    {
     "id": "O-CAPACITY",
     "title": "Measure capacity, load and growth",
     "state": "blocked",
     "waitingOn": "Omar",
     "card": "plat-host",
     "status5": "needs-omar"
    },
    {
     "id": "O-DATA",
     "title": "Durable database and private file storage",
     "state": "blocked",
     "waitingOn": "Omar",
     "card": "plat-host",
     "status5": "needs-omar"
    },
    {
     "id": "O-DOMAIN",
     "title": "Owned domain, secure entry point and recovery",
     "state": "blocked",
     "waitingOn": "Omar",
     "card": "plat-host",
     "status5": "needs-omar"
    },
    {
     "id": "O-HOST",
     "title": "Hosting ownership and architecture decision",
     "state": "blocked",
     "waitingOn": "Omar",
     "card": "plat-host",
     "status5": "needs-omar"
    },
    {
     "id": "O-RECOVERY",
     "title": "Disaster recovery and portability rehearsal",
     "state": "blocked",
     "waitingOn": "Omar",
     "card": "plat-host",
     "status5": "needs-omar"
    },
    {
     "id": "GL-053",
     "title": "A Makki address instead of a pages.dev link (app.makkiinc.ca or similar) — whose Cloudflare account holds Makki's app long-term, then a domain pointed at it;…",
     "state": "blocked",
     "waitingOn": "Both",
     "card": "plat-host",
     "status5": "needs-both"
    }
   ],
   "fallback": false,
   "rq": false,
   "openBecause": "Whose account, which address and where the data sits are money and ownership choices; your 2026-10-03 requirements (a secure place, room to grow, a duplicate) name no provider.",
   "decisionTrace": "O6 — Omar 2026-10-03 00:31 UTC, vault/topics/decisions/a secure place, room to grow, and a duplicate.md: three requirements, no provider named; canonical rows waiting on Omar (v2.4, 2026-10-31)",
   "splitFrom": null,
   "plainTitle": "Hosting and the Makki address",
   "rewordedFrom": {
    "n": 3,
    "question": "Hosting: the owner's own Cloudflare account or EazyLife's, a Makki address, and where the database and backups live?",
    "source": "Omar 2026-11-07 17:06 UTC Telegram 2174 (one decision per question, plain words, the recorded authorizations applied); main BUILDER ORDER 2026-11-07T17:40Z (hive/EXECUTION_LOG.md)"
   },
   "rewordedAgain": null,
   "whyOnlyOmar": "Whose account the app runs in, what address the crew types and where the real data sits are money and ownership choices; he set three requirements and named no provider, and his later words keep hosting his.",
   "whyOnlyOmarSources": [
    "Omar 2026-10-03 00:31 UTC — three requirements, no provider (vault/topics/decisions/a secure place, room to grow, and a duplicate.md)",
    "Omar 2026-10-06 16:43 UTC — vault/topics/decisions/implementation now, on your runtime.md: implementation on demo data is authorised; \"It does not approve a hosting bill, a server, a database or a mailbox read\"; no new paid services",
    "Omar 2026-10-10 16:40 UTC — vault/topics/decisions/two finish lines.md: hosting owner and budget, server accounts, a real database, server-side auth, the real data and QuickBooks \"are still a word Omar has not given\""
   ],
   "supersededBy": null,
   "appliedAnswers": [],
   "decision": "Which account hosts the app from the next publish: the owner's own at a Makki address, or EazyLife's for now. Where a second copy is kept is a separate question this answer does not decide.",
   "prerequisites": [
    "The owner's own Cloudflare account, or his word that EazyLife's stays for now.",
    "A Makki web address, if Makki owns none (a domain is about $15–20 a year)."
   ],
   "artifact": null,
   "sources": [
    "main's BUILDER CONTINUATION of 2026-11-08 carrying Codex's independent live re-review of the same date under Omar's standing authority, relayed by main (hive/EXECUTION_LOG.md): the question's CURRENT sentence must agree with what the build does and must ask exactly one thing. tasks-correction-2 v2.0.0, 2026-11-08."
   ],
   "proposal": null,
   "freedPart": "the backup, capacity, domain and recovery rows are not held behind this answer and the hive builds them on demo data",
   "sendScope": null,
   "outcome": "Open: 8 rows under this answer; the backup, capacity, domain and recovery rows are not held behind this answer and the hive builds them on demo data.",
   "next": "Pick a choice or type an answer and save it; it stays on this device until you copy all answers into the line.",
   "questionShown": "Hosting — does the app run in the owner's own account at a Makki address, or in EazyLife's account for now?",
   "whyShown": "Decides whose account the app runs in, what address the crew types, and where the real data, the database and the backups will sit. The owner's own account is the cleaner answer; a domain is $15–20 a year if Makki does not own one. The backup, capacity, domain and recovery rows are not held behind this answer — the hive builds them on demo data either way.",
   "unlocks": "Your answer moves 8 rows: Back up and export business data; Backups, restore and usable exports and 6 more.",
   "unlocksShown": "Your answer moves 8 rows: Back up and export business data; Backups, restore and usable exports and 6 more."
  },
  {
   "n": 5,
   "key": "review-forms",
   "ids": [
    "GL-069"
   ],
   "question": "Forms is live — good, bad or change?",
   "why": "You open it and say; the row has waited on that one word since it went live.",
   "choices": [
    {
     "value": "good",
     "label": "Good — leave it"
    },
    {
     "value": "bad",
     "label": "Bad — send it back"
    },
    {
     "value": "change",
     "label": "Change (say what in the box)"
    }
   ],
   "cards": [],
   "covers": [
    {
     "id": "GL-069",
     "title": "Forms is live — good / bad / change; he opens it and says",
     "state": "blocked",
     "waitingOn": "Omar",
     "card": "office-reviews",
     "status5": "needs-omar"
    }
   ],
   "fallback": false,
   "rq": false,
   "openBecause": "Forms is live and waits on your review word alone; no dated word on this line names it as reviewed.",
   "decisionTrace": "GL-069 — GO_LIVE.md row, waiting on Omar since 2026-09; canonical v2.4 (2026-10-31) waiting on Omar",
   "splitFrom": {
    "key": "reviews",
    "n": 4,
    "question": "Your open reviews — Forms, the Tickets pass, the Team page's demo email, the two silent jobs, the login slide — good, bad or change? And do we add the owner to this line?"
   },
   "plainTitle": "Forms: good, bad or change",
   "rewordedFrom": null,
   "rewordedAgain": null,
   "whyOnlyOmar": "Good, bad or change on a live screen is his review word alone; the row has waited on that one word since it went live and no dated word names it as reviewed.",
   "whyOnlyOmarSources": [
    "GO_LIVE.md row GL-069, written 2026-09-26: good / bad / change is his word",
    "canonical accounting v2.4, generated 2026-10-31 (materials/canonical/2026-10-31_canonical-tasks.v2.4.json): the rows under this question read waiting on Omar or on both",
    "vault/topics/people/Omar.md, 2026-09-26 Now-block: \"good / bad / change on Forms and on tickets now both are live\" — unanswered"
   ],
   "supersededBy": null,
   "appliedAnswers": [],
   "decision": "Whether the Forms page as it stands today is good as it is, needs a change, or goes back for rework.",
   "prerequisites": [],
   "artifact": {
    "label": "Forms — the site lead's Forms page in the app (sign in as the site lead)",
    "href": "https://makki-portal-37c739cf.pages.dev/"
   },
   "sources": [
    "main's BUILDER CONTINUATION of 2026-11-08 carrying Codex's independent live re-review of the same date under Omar's standing authority, relayed by main (hive/EXECUTION_LOG.md): the question's CURRENT sentence must agree with what the build does and must ask exactly one thing. tasks-correction-2 v2.0.0, 2026-11-08."
   ],
   "proposal": null,
   "freedPart": null,
   "sendScope": null,
   "outcome": "Open: 1 row waits on this one answer; nothing moves on it until Omar gives it.",
   "next": "Pick a choice or type an answer and save it; it stays on this device until you copy all answers into the line.",
   "questionShown": "Forms is live — good, bad or change?",
   "whyShown": "You open it and say; the row has waited on that one word since it went live.",
   "unlocks": "Your answer moves 1 row: Forms is live — good / bad / change; he opens it and says.",
   "unlocksShown": "Your answer moves 1 row: Forms is live — good / bad / change; he opens it and says."
  },
  {
   "n": 6,
   "key": "review-tickets",
   "ids": [
    "GL-074"
   ],
   "question": "The Tickets screens — the ticket records, the earlier design and the phone layout — good, bad or change?",
   "why": "Live since 17 September and waiting on your word.",
   "choices": [
    {
     "value": "good",
     "label": "Good — leave it"
    },
    {
     "value": "bad",
     "label": "Bad — send it back"
    },
    {
     "value": "change",
     "label": "Change (say what in the box)"
    }
   ],
   "cards": [],
   "covers": [
    {
     "id": "GL-074",
     "title": "Tickets write · earlier design and phone passes — good / bad / change; live since 2026-09-17 awaiting his word",
     "state": "blocked",
     "waitingOn": "Omar",
     "card": "office-reviews",
     "status5": "needs-omar"
    }
   ],
   "fallback": false,
   "rq": false,
   "openBecause": "The Tickets screens have been live since 2026-09-17 awaiting your word; no dated word names them as reviewed.",
   "decisionTrace": "GL-074 — live since 2026-09-17 (GO_LIVE.md); canonical v2.4 (2026-10-31) waiting on Omar",
   "splitFrom": {
    "key": "reviews",
    "n": 4,
    "question": "Your open reviews — Forms, the Tickets pass, the Team page's demo email, the two silent jobs, the login slide — good, bad or change? And do we add the owner to this line?"
   },
   "plainTitle": "The Tickets screens: good, bad or change",
   "rewordedFrom": {
    "n": 5,
    "question": "The Tickets pass — the write pass, the earlier design and the phone passes — good, bad or change?",
    "source": "Omar's independent live review of the All Tasks page, 2026-11-07 22:13 UTC Telegram 2233, carried by main's Builder order 2026-11-07T23:10Z (hive/EXECUTION_LOG.md); pin v2.3.0 (hive/checks/2026-11-07_requirements-tasks-b3.md, 2026-11-07) (the artifact named in plain words; no test-history words)"
   },
   "rewordedAgain": null,
   "whyOnlyOmar": "Good, bad or change on the live Tickets screens is his review word alone; nothing dated on this line says they were reviewed.",
   "whyOnlyOmarSources": [
    "GO_LIVE.md row GL-074, written 2026-09-26: live since 2026-09-17, awaiting his word",
    "canonical accounting v2.4, generated 2026-10-31 (materials/canonical/2026-10-31_canonical-tasks.v2.4.json): the rows under this question read waiting on Omar or on both",
    "vault/topics/people/Omar.md, 2026-09-26 Now-block: the tickets review unanswered"
   ],
   "supersededBy": null,
   "appliedAnswers": [],
   "decision": "Whether the Tickets screens as they stand today are good as they are, need a change, or go back for rework.",
   "prerequisites": [],
   "artifact": {
    "label": "Tickets — People → Tickets in the app (the owner's login), on desktop and on a phone",
    "href": "https://makki-portal-37c739cf.pages.dev/"
   },
   "sources": [
    "main's BUILDER CONTINUATION of 2026-11-08 carrying Codex's independent live re-review of the same date under Omar's standing authority, relayed by main (hive/EXECUTION_LOG.md): the question's CURRENT sentence must agree with what the build does and must ask exactly one thing. tasks-correction-2 v2.0.0, 2026-11-08."
   ],
   "proposal": null,
   "freedPart": null,
   "sendScope": null,
   "outcome": "Open: 1 row waits on this one answer; nothing moves on it until Omar gives it.",
   "next": "Pick a choice or type an answer and save it; it stays on this device until you copy all answers into the line.",
   "questionShown": "The Tickets screens — the ticket records, the earlier design and the phone layout — good, bad or change?",
   "whyShown": "Live since 17 September and waiting on your word.",
   "unlocks": "Your answer moves 1 row: Tickets write · earlier design and phone passes — good / bad /….",
   "unlocksShown": "Your answer moves 1 row: Tickets write · earlier design and phone passes — good / bad /…."
  },
  {
   "n": 7,
   "key": "review-team-email",
   "ids": [
    "GL-071"
   ],
   "question": "The Team page's demo login prints an email address on screen — cut it or leave it?",
   "why": "One word on a screen you have seen.",
   "choices": [
    {
     "value": "cut",
     "label": "Cut it"
    },
    {
     "value": "leave",
     "label": "Leave it"
    }
   ],
   "cards": [],
   "covers": [
    {
     "id": "GL-071",
     "title": "The Team page demo login prints an email address on screen — cut or leave",
     "state": "blocked",
     "waitingOn": "Omar",
     "card": "office-reviews",
     "status5": "needs-omar"
    }
   ],
   "fallback": false,
   "rq": false,
   "openBecause": "Cut or leave is a one-word call on a screen you have seen; nothing dated settles it.",
   "decisionTrace": "GL-071 — GO_LIVE.md; canonical v2.4 (2026-10-31) waiting on Omar",
   "splitFrom": {
    "key": "reviews",
    "n": 4,
    "question": "Your open reviews — Forms, the Tickets pass, the Team page's demo email, the two silent jobs, the login slide — good, bad or change? And do we add the owner to this line?"
   },
   "plainTitle": "The demo email on the Team page",
   "rewordedFrom": null,
   "rewordedAgain": null,
   "whyOnlyOmar": "Cut or leave is a one-word call on a screen he has seen; it is a choice about what the client sees, not a repair, and nothing dated settles it.",
   "whyOnlyOmarSources": [
    "GO_LIVE.md row GL-071, written 2026-09-26",
    "canonical accounting v2.4, generated 2026-10-31 (materials/canonical/2026-10-31_canonical-tasks.v2.4.json): the rows under this question read waiting on Omar or on both",
    "vault/topics/people/Omar.md, the 2026-10-04 Now-block (read 2026-11-07): what is still his — hosting, the day and the money for the outbound line, naming an outside weather service, the Team page demo login, the quiet offer on the nightly report"
   ],
   "supersededBy": null,
   "appliedAnswers": [],
   "decision": "Whether the Team page's demo login keeps printing an email address on screen, or that line is cut.",
   "prerequisites": [],
   "artifact": {
    "label": "Team & Access in the app (the owner's login) — the demo login line that prints an email address",
    "href": "https://makki-portal-37c739cf.pages.dev/"
   },
   "sources": [
    "main's BUILDER CONTINUATION of 2026-11-08 carrying Codex's independent live re-review of the same date under Omar's standing authority, relayed by main (hive/EXECUTION_LOG.md): the question's CURRENT sentence must agree with what the build does and must ask exactly one thing. tasks-correction-2 v2.0.0, 2026-11-08."
   ],
   "proposal": null,
   "freedPart": null,
   "sendScope": null,
   "outcome": "Open: 1 row waits on this one answer; nothing moves on it until Omar gives it.",
   "next": "Pick a choice or type an answer and save it; it stays on this device until you copy all answers into the line.",
   "questionShown": "The Team page's demo login prints an email address on screen — cut it or leave it?",
   "whyShown": "One word on a screen you have seen.",
   "unlocks": "Your answer moves 1 row: The Team page demo login prints an email address on screen — cut or….",
   "unlocksShown": "Your answer moves 1 row: The Team page demo login prints an email address on screen — cut or…."
  },
  {
   "n": 8,
   "key": "review-login-slide",
   "ids": [
    "GL-075"
   ],
   "question": "The login slide — keep the estimator and the bookkeeper on one slide, or give each a slide of its own?",
   "why": "A design call flagged as a decision, not a correction; one word closes it.",
   "choices": [
    {
     "value": "one",
     "label": "One slide for both"
    },
    {
     "value": "two",
     "label": "A slide each"
    },
    {
     "value": "later",
     "label": "Decide later"
    }
   ],
   "cards": [],
   "covers": [
    {
     "id": "GL-075",
     "title": "Estimator + bookkeeper on one login slide · 3 master-list rows (V45, V17, V132/V84, flagged as decisions not corrections) · \"Bid vs Actual\" tab — decide each",
     "state": "blocked",
     "waitingOn": "Omar",
     "card": "office-reviews",
     "status5": "needs-omar"
    }
   ],
   "fallback": false,
   "rq": false,
   "openBecause": "The one-slide-or-two call was flagged as a decision, not a correction, and the canonical row still reads waiting on Omar.",
   "decisionTrace": "GL-075 — the login slide alone stays the question; the bid-versus-actual tab is GL-043, authorised 2026-10-06 (implementation now, on your runtime.md) and routed by its state; the three master-list rows V45, V17 and V132/V84 route by their own canonical states (canonical v2.4, 2026-10-31); GO_LIVE.md",
   "splitFrom": {
    "key": "reviews",
    "n": 4,
    "question": "Your open reviews — Forms, the Tickets pass, the Team page's demo email, the two silent jobs, the login slide — good, bad or change? And do we add the owner to this line?"
   },
   "plainTitle": "The login slide",
   "rewordedFrom": {
    "n": 8,
    "question": "One login slide for the estimator and the bookkeeper, the three master-list rows flagged as decisions, and the bid-versus-actual tab — decide each?",
    "source": "Omar 2026-11-07 17:06 UTC Telegram 2174 (one decision per question, plain words, the recorded authorizations applied); main BUILDER ORDER 2026-11-07T17:40Z (hive/EXECUTION_LOG.md)"
   },
   "rewordedAgain": null,
   "whyOnlyOmar": "One slide for both or a slide each is a design call he was asked and did not answer; the office made the one-slide choice on its own and said so, and his word is still the one that closes it.",
   "whyOnlyOmarSources": [
    "vault/topics/decisions/one slide per person, not one per workflow.md (Omar 2026-09-17 22:21 UTC): \"He was asked together or split and did not answer\"",
    "canonical accounting v2.4, generated 2026-10-31 (materials/canonical/2026-10-31_canonical-tasks.v2.4.json): the rows under this question read waiting on Omar or on both",
    "GO_LIVE.md row GL-075, written 2026-09-26: the login slide flagged as a decision"
   ],
   "supersededBy": null,
   "appliedAnswers": [],
   "decision": "Whether the login slide keeps the estimator and the bookkeeper together, or each of them gets a slide of its own.",
   "prerequisites": [],
   "artifact": {
    "label": "The login slide in the deck",
    "href": "https://makki-home.pages.dev/slides/"
   },
   "sources": [
    "main's BUILDER CONTINUATION of 2026-11-08 carrying Codex's independent live re-review of the same date under Omar's standing authority, relayed by main (hive/EXECUTION_LOG.md): the question's CURRENT sentence must agree with what the build does and must ask exactly one thing. tasks-correction-2 v2.0.0, 2026-11-08."
   ],
   "proposal": null,
   "freedPart": null,
   "sendScope": null,
   "outcome": "Open: 1 row waits on this one answer; nothing moves on it until Omar gives it.",
   "next": "Pick a choice or type an answer and save it; it stays on this device until you copy all answers into the line.",
   "questionShown": "The login slide — keep the estimator and the bookkeeper on one slide, or give each a slide of its own?",
   "whyShown": "A design call flagged as a decision, not a correction; one word closes it.",
   "unlocks": "Your answer moves 1 row: Estimator + bookkeeper on one login slide · 3 master-list rows….",
   "unlocksShown": "Your answer moves 1 row: Estimator + bookkeeper on one login slide · 3 master-list rows…."
  },
  {
   "n": 9,
   "key": "review-librarian-quiet",
   "ids": [
    "GL-070"
   ],
   "question": "The nightly report posts on the line — say 'quiet' and it files silently instead?",
   "why": "You asked twice why it posts; one word changes it.",
   "choices": [
    {
     "value": "quiet",
     "label": "Quiet — file it silently"
    },
    {
     "value": "keep",
     "label": "Keep posting it"
    }
   ],
   "cards": [],
   "covers": [
    {
     "id": "GL-070",
     "title": "The nightly librarian report posts here; twice he's asked why — say \"quiet\" and it would file silently",
     "state": "blocked",
     "waitingOn": "Omar",
     "card": "office-reviews",
     "status5": "needs-omar"
    }
   ],
   "fallback": false,
   "rq": false,
   "openBecause": "You asked twice why the nightly report posts; saying quiet would file it silently, and the word is still yours.",
   "decisionTrace": "GL-070 — GO_LIVE.md; canonical v2.4 (2026-10-31) waiting on Omar",
   "splitFrom": {
    "key": "reviews",
    "n": 4,
    "question": "Your open reviews — Forms, the Tickets pass, the Team page's demo email, the two silent jobs, the login slide — good, bad or change? And do we add the owner to this line?"
   },
   "plainTitle": "The nightly report on the line",
   "rewordedFrom": null,
   "rewordedAgain": null,
   "whyOnlyOmar": "The nightly report posts on his line because he has not said quiet; he asked three times why it arrives and the offer to file it silently is still his to take or leave.",
   "whyOnlyOmarSources": [
    "vault/topics/people/Omar.md, the 2026-10-04 Now-block (read 2026-11-07): what is still his — hosting, the day and the money for the outbound line, naming an outside weather service, the Team page demo login, the quiet offer on the nightly report",
    "GO_LIVE.md row GL-070, written 2026-09-26",
    "vault/topics/people/Omar.md, 2026-10-03: the five small calls answered \"What do you want\" — the quiet offer among them, untaken"
   ],
   "supersededBy": null,
   "appliedAnswers": [],
   "decision": "Whether the night report files itself silently instead of posting on the line.",
   "prerequisites": [],
   "artifact": {
    "label": "The board's feed, where the nightly report lands",
    "href": "hive.html"
   },
   "sources": [
    "main's BUILDER CONTINUATION of 2026-11-08 carrying Codex's independent live re-review of the same date under Omar's standing authority, relayed by main (hive/EXECUTION_LOG.md): the question's CURRENT sentence must agree with what the build does and must ask exactly one thing. tasks-correction-2 v2.0.0, 2026-11-08."
   ],
   "proposal": null,
   "freedPart": null,
   "sendScope": null,
   "outcome": "Open: 1 row waits on this one answer; nothing moves on it until Omar gives it.",
   "next": "Pick a choice or type an answer and save it; it stays on this device until you copy all answers into the line.",
   "questionShown": "The nightly report posts on the line — say 'quiet' and it files silently instead?",
   "whyShown": "You asked twice why it posts; one word changes it.",
   "unlocks": "Your answer moves 1 row: The nightly report posts here; twice he's asked why — say \"quiet\"….",
   "unlocksShown": "Your answer moves 1 row: The nightly report posts here; twice he's asked why — say \"quiet\"…."
  },
  {
   "n": 10,
   "key": "training",
   "ids": [
    "V21·codex",
    "M-CAT"
   ],
   "question": "Training on the phone — pay for a licensed training catalogue, or go without one?",
   "why": "The licensed catalogue is money and an outside service, so that part is yours. The training matrix and the onboarding material were released from your queue on 4 October 2026 and are not held by this answer — the hive builds them on demo data either way; only the licensed course content waits on your word.",
   "choices": [
    {
     "value": "catalogue",
     "label": "Pay for the catalogue"
    },
    {
     "value": "nocatalogue",
     "label": "No catalogue — our own material only"
    },
    {
     "value": "wait",
     "label": "Wait"
    }
   ],
   "cards": [
    "safe-train"
   ],
   "covers": [
    {
     "id": "V21·codex",
     "title": "Licensed training catalogue option",
     "state": "blocked",
     "waitingOn": "Omar",
     "card": "safe-train",
     "status5": "needs-omar"
    },
    {
     "id": "M-CAT",
     "title": "Licensed training catalogue decision and integration",
     "state": "blocked",
     "waitingOn": "Omar",
     "card": "safe-train",
     "status5": "needs-omar"
    }
   ],
   "fallback": false,
   "rq": false,
   "openBecause": "The licensed training catalogue is a paid service and no new paid service starts without your word; only the licensed course content takes its shape from that one choice.",
   "decisionTrace": "O7 — The owner's ask on the call (profile/Fieldflo_Competitor_Call_2026-09-08.md); M-CAT a paid catalogue, no new paid services (vault/topics/decisions/implementation now, on your runtime.md, 2026-10-06); canonical rows waiting on Omar (v2.4, 2026-10-31)",
   "splitFrom": null,
   "plainTitle": "Training on the phone",
   "rewordedFrom": {
    "n": 12,
    "question": "Training on the phone — build the training matrix, onboarding materials and the manager orientation video, and is a licensed training catalogue in or out?",
    "source": "Omar 2026-11-07 17:06 UTC Telegram 2174 (one decision per question, plain words, the recorded authorizations applied); main BUILDER ORDER 2026-11-07T17:40Z (hive/EXECUTION_LOG.md)"
   },
   "rewordedAgain": {
    "question": "Training on the phone — do we build the training matrix, the onboarding and the orientation video with a paid training catalogue, or without one?",
    "source": "main BUILDER DELTA 2026-11-07T18:20Z carrying Omar 18:15Z Telegram 2186 (hive/EXECUTION_LOG.md); pin v2.1.0 (hive/checks/2026-11-07_requirements-tasks-b3.md, 2026-11-07)",
    "why": "the build parts are the hive's; the paid catalogue is the decision"
   },
   "whyOnlyOmar": "A licensed training catalogue is a paid outside service, and no new paid service starts without his word; the training rows take one shape with it and another without, so they wait on that one choice.",
   "whyOnlyOmarSources": [
    "Omar 2026-10-06 16:43 UTC — vault/topics/decisions/implementation now, on your runtime.md: implementation on demo data is authorised; \"It does not approve a hosting bill, a server, a database or a mailbox read\"; no new paid services",
    "canonical accounting v2.4, generated 2026-10-31 (materials/canonical/2026-10-31_canonical-tasks.v2.4.json): the rows under this question read waiting on Omar or on both",
    "profile/Fieldflo_Competitor_Call_2026-09-08.md: the owner asked for the orientation video on the call"
   ],
   "supersededBy": null,
   "appliedAnswers": [],
   "decision": "Whether Makki pays for a licensed training catalogue, or the app ships with Makki's own training material only.",
   "prerequisites": [],
   "artifact": null,
   "sources": [
    "main's BUILDER CONTINUATION of 2026-11-08 carrying Codex's independent live re-review of the same date under Omar's standing authority, relayed by main (hive/EXECUTION_LOG.md): the question's CURRENT sentence must agree with what the build does and must ask exactly one thing. tasks-correction-2 v2.0.0, 2026-11-08."
   ],
   "proposal": null,
   "freedPart": null,
   "sendScope": null,
   "outcome": "Open: 2 rows wait on this one answer; nothing moves on them until Omar gives it.",
   "next": "Pick a choice or type an answer and save it; it stays on this device until you copy all answers into the line.",
   "questionShown": "Training on the phone — pay for a licensed training catalogue, or go without one?",
   "whyShown": "The licensed catalogue is money and an outside service, so that part is yours. The training matrix and the onboarding material were released from your queue on 4 October 2026 and are not held by this answer — the hive builds them on demo data either way; only the licensed course content waits on your word.",
   "unlocks": "Your answer moves 2 rows: Licensed training catalogue option; Licensed training catalogue decision and integration.",
   "unlocksShown": "Your answer moves 2 rows: Licensed training catalogue option; Licensed training catalogue decision and integration."
  },
  {
   "n": 11,
   "key": "server",
   "ids": [
    "D01",
    "D04",
    "D05",
    "M-AUD",
    "M-AUTH",
    "M-SYNC",
    "O-LEGAL",
    "O-SECURITY"
   ],
   "question": "Do we start the server side — logins enforced on a server, an audit trail, sync and conflict recovery — or stay browser-only until the owner's data is in?",
   "why": "Today the app is a browser-only prototype: no server, no database, and no server-enforced authentication — the logins are a browser pretence. Starting the server side is build time plus a running bill: about $25–40 a month, hosted on one small managed instance where the database and the audit trail would run. These rows are that work plus a security and data-handling review.",
   "choices": [
    {
     "value": "now",
     "label": "Start now"
    },
    {
     "value": "after",
     "label": "After the QuickBooks login"
    },
    {
     "value": "wait",
     "label": "Not yet"
    }
   ],
   "cards": [
    "plat-auth"
   ],
   "covers": [
    {
     "id": "D01",
     "title": "Authorization enforced throughout the system",
     "state": "blocked",
     "waitingOn": "Omar",
     "card": "plat-auth",
     "status5": "needs-omar"
    },
    {
     "id": "D04",
     "title": "Audit changes and corrections",
     "state": "blocked",
     "waitingOn": "Omar",
     "card": "plat-auth",
     "status5": "needs-omar"
    },
    {
     "id": "D05",
     "title": "Manage sync failures and conflicts",
     "state": "blocked",
     "waitingOn": "Omar",
     "card": "plat-auth",
     "status5": "needs-omar"
    },
    {
     "id": "M-AUD",
     "title": "Change audit, corrections and approved versions",
     "state": "blocked",
     "waitingOn": "Omar",
     "card": "plat-auth",
     "status5": "needs-omar"
    },
    {
     "id": "M-AUTH",
     "title": "Server-enforced identity, roles and data boundaries",
     "state": "blocked",
     "waitingOn": "Omar",
     "card": "plat-auth",
     "status5": "needs-omar"
    },
    {
     "id": "M-SYNC",
     "title": "Reliable sync, deduplication and conflict recovery",
     "state": "blocked",
     "waitingOn": "Omar",
     "card": "plat-auth",
     "status5": "needs-omar"
    },
    {
     "id": "O-LEGAL",
     "title": "Data handling, terms and retention review",
     "state": "blocked",
     "waitingOn": "Omar",
     "card": "plat-auth",
     "status5": "needs-omar"
    },
    {
     "id": "O-SECURITY",
     "title": "Security review and access recovery",
     "state": "blocked",
     "waitingOn": "Omar",
     "card": "plat-auth",
     "status5": "needs-omar"
    }
   ],
   "fallback": false,
   "rq": false,
   "openBecause": "Starting the server side is a build-and-cost decision outside the demo rails: server auth and shared-data design are prepared as documents, not deployed, until you say start.",
   "decisionTrace": "vault/topics/decisions/implementation now, on your runtime.md (2026-10-06): server auth and shared-data design prepared as documents, not deployed; canonical rows waiting on Omar (v2.4, 2026-10-31)",
   "splitFrom": null,
   "plainTitle": "Starting the server side",
   "rewordedFrom": null,
   "rewordedAgain": null,
   "whyOnlyOmar": "A server with enforced logins, an audit trail and sync is hosting cost and a real-data step; his authorisation covers demo fixes only and says in so many words that a server is still his word.",
   "whyOnlyOmarSources": [
    "Omar 2026-10-06 16:43 UTC — vault/topics/decisions/implementation now, on your runtime.md: implementation on demo data is authorised; \"It does not approve a hosting bill, a server, a database or a mailbox read\"; no new paid services",
    "Omar 2026-10-10 16:40 UTC — vault/topics/decisions/two finish lines.md: hosting owner and budget, server accounts, a real database, server-side auth, the real data and QuickBooks \"are still a word Omar has not given\"",
    "canonical accounting v2.4, generated 2026-10-31 (materials/canonical/2026-10-31_canonical-tasks.v2.4.json): the rows under this question read waiting on Omar or on both"
   ],
   "supersededBy": null,
   "appliedAnswers": [],
   "decision": "Whether the hive starts the server side now for the authorised demo build, or leaves it for a production launch, whose monthly cost is part of this answer.",
   "prerequisites": [
    "A hosting account and a budget for a server (the hosting question above).",
    "The owner's QuickBooks login, if the server side waits for his data."
   ],
   "artifact": null,
   "sources": [
    "main's BUILDER CONTINUATION of 2026-11-08 carrying Codex's independent live re-review of the same date under Omar's standing authority, relayed by main (hive/EXECUTION_LOG.md): the question's CURRENT sentence must agree with what the build does and must ask exactly one thing. tasks-correction-2 v2.0.0, 2026-11-08."
   ],
   "proposal": null,
   "freedPart": null,
   "sendScope": null,
   "outcome": "Open: 8 rows wait on this one answer; nothing moves on them until Omar gives it.",
   "next": "Pick a choice or type an answer and save it; it stays on this device until you copy all answers into the line.",
   "questionShown": "Do we start the server side — logins enforced on a server, an audit trail, sync and conflict recovery — or stay browser-only until the owner's data is in?",
   "whyShown": "Today the app is a browser-only prototype: no server, no database, and no server-enforced authentication — the logins are a browser pretence. Starting the server side is build time plus a running bill: about $25–40 a month, hosted on one small managed instance where the database and the audit trail would run. These rows are that work plus a security and data-handling review.",
   "unlocks": "Your answer moves 8 rows: Authorization enforced throughout the system; Audit changes and corrections and 6 more.",
   "unlocksShown": "Your answer moves 8 rows: Authorization enforced throughout the system; Audit changes and corrections and 6 more."
  },
  {
   "n": 12,
   "key": "launch",
   "ids": [
    "O-CUT",
    "O-MONITOR",
    "O-SUPPORT",
    "O-UAT"
   ],
   "question": "Pilot and launch — who approves the cut-over to the real business?",
   "why": "Launch readiness is the second finish line, and one name signs the cut-over to the real business. Who owns support and who watches the monitoring are separate questions and are not settled by this one.",
   "choices": [
    {
     "value": "omar",
     "label": "Omar approves"
    },
    {
     "value": "owner",
     "label": "The owner approves"
    },
    {
     "value": "both",
     "label": "Both sign off"
    }
   ],
   "cards": [
    "plat-launch"
   ],
   "covers": [
    {
     "id": "O-CUT",
     "title": "Controlled cutover and launch approval",
     "state": "blocked",
     "waitingOn": "Omar",
     "card": "plat-launch",
     "status5": "needs-omar"
    },
    {
     "id": "O-MONITOR",
     "title": "Monitoring, incident response and status",
     "state": "blocked",
     "waitingOn": "Omar",
     "card": "plat-launch",
     "status5": "needs-omar"
    },
    {
     "id": "O-SUPPORT",
     "title": "Support ownership and self-service help",
     "state": "blocked",
     "waitingOn": "Omar",
     "card": "plat-launch",
     "status5": "needs-omar"
    },
    {
     "id": "O-UAT",
     "title": "End-to-end pilot and acceptance evidence",
     "state": "blocked",
     "waitingOn": "Omar",
     "card": "plat-launch",
     "status5": "needs-omar"
    }
   ],
   "fallback": false,
   "rq": false,
   "openBecause": "Cut-over approval, support ownership and monitoring are the second finish line and are not the hive's to decide.",
   "decisionTrace": "vault/topics/decisions/two finish lines.md (2026-10-10); canonical rows waiting on Omar (v2.4, 2026-10-31)",
   "splitFrom": null,
   "plainTitle": "Pilot and launch approval",
   "rewordedFrom": {
    "n": 14,
    "question": "Pilot and launch — who approves the cut-over, who owns support, and what monitoring do we stand up?",
    "source": "Omar 2026-11-07 17:06 UTC Telegram 2174 (one decision per question, plain words, the recorded authorizations applied); main BUILDER ORDER 2026-11-07T17:40Z (hive/EXECUTION_LOG.md)"
   },
   "rewordedAgain": null,
   "whyOnlyOmar": "Who approves the cut-over to the real business is the second finish line; it is an approval, not a build, and the hive cannot give it to itself.",
   "whyOnlyOmarSources": [
    "Omar 2026-10-10 16:40 UTC — vault/topics/decisions/two finish lines.md: hosting owner and budget, server accounts, a real database, server-side auth, the real data and QuickBooks \"are still a word Omar has not given\"",
    "canonical accounting v2.4, generated 2026-10-31 (materials/canonical/2026-10-31_canonical-tasks.v2.4.json): the rows under this question read waiting on Omar or on both"
   ],
   "supersededBy": null,
   "appliedAnswers": [],
   "decision": "Who signs the one go-live approval for the cut-over to the real business: Omar, the owner, or both.",
   "prerequisites": [
    "A pilot on the owner's real data (the real-data question below).",
    "Hosting and the server side settled, so the cut-over has somewhere to land."
   ],
   "artifact": null,
   "sources": [
    "main's BUILDER CONTINUATION of 2026-11-08 carrying Codex's independent live re-review of the same date under Omar's standing authority, relayed by main (hive/EXECUTION_LOG.md): the question's CURRENT sentence must agree with what the build does and must ask exactly one thing. tasks-correction-2 v2.0.0, 2026-11-08."
   ],
   "proposal": null,
   "freedPart": null,
   "sendScope": null,
   "outcome": "Open: 4 rows wait on this one answer; nothing moves on them until Omar gives it.",
   "next": "Pick a choice or type an answer and save it; it stays on this device until you copy all answers into the line.",
   "questionShown": "Pilot and launch — who approves the cut-over to the real business?",
   "whyShown": "Launch readiness is the second finish line, and one name signs the cut-over to the real business. Who owns support and who watches the monitoring are separate questions and are not settled by this one.",
   "unlocks": "Your answer moves 4 rows: Controlled cutover and launch approval; Monitoring, incident response and status and 2 more.",
   "unlocksShown": "Your answer moves 4 rows: Controlled cutover and launch approval; Monitoring, incident response and status and 2 more."
  },
  {
   "n": 13,
   "key": "cutover",
   "ids": [
    "GL-044"
   ],
   "question": "Real data — when do you say the real data is connected and the demo header comes off?",
   "why": "Until your word, every figure carries the demo header. It also waits on the owner's QuickBooks login — a login, not an integration — and on the migration of his workbook, which is not specified yet.",
   "choices": [
    {
     "value": "evidence",
     "label": "When his own records are in the app and reconcile — the evidence named in the box"
    },
    {
     "value": "qbo",
     "label": "When the owner's QuickBooks login is done"
    },
    {
     "value": "date",
     "label": "On a date you name (write it in the box)"
    },
    {
     "value": "wait",
     "label": "Not yet"
    }
   ],
   "cards": [
    "fin-cutover"
   ],
   "covers": [
    {
     "id": "GL-044",
     "title": "Demo data → real data — Omar's word that the real data is connected; until then every figure carries a demo header",
     "state": "blocked",
     "waitingOn": "Omar",
     "card": "fin-cutover",
     "status5": "needs-omar"
    }
   ],
   "fallback": false,
   "rq": false,
   "openBecause": "Only your word connects the real data and takes the demo header off; it also waits on the owner's QuickBooks login and a workbook migration that is not specified yet.",
   "decisionTrace": "GL-044 — rail 7 (every figure is demo until Omar says the real data is connected); QuickBooks \"later, just make sure its ready to import\" (Omar 2026-10-03 00:31 UTC, vault/topics/people/Omar.md); canonical row waiting on Omar (v2.4, 2026-10-31)",
   "splitFrom": null,
   "plainTitle": "The real-data cut-over",
   "rewordedFrom": null,
   "rewordedAgain": null,
   "whyOnlyOmar": "Only his word connects the real data and takes the demo header off; until then every figure is demo by the rails, and that word has not been given.",
   "whyOnlyOmarSources": [
    "AGENTS.md rail 7 (2026-09-10): every number is demo until Omar says the real data is connected",
    "Omar 2026-10-10 16:40 UTC — vault/topics/decisions/the money reports live in the app.md: \"Every figure is demo until Omar says the real data is connected\"",
    "Omar 2026-10-03 00:31 UTC — QuickBooks \"later, just make sure its ready to import\" (vault/topics/people/Omar.md)"
   ],
   "supersededBy": null,
   "appliedAnswers": [],
   "decision": "What must be true before the demo header comes off: the evidence that the owner's own records are in the app and reconcile.",
   "prerequisites": [
    "The owner's QuickBooks login and his real customers, jobs and invoices imported.",
    "The day the demo data comes out, named by the owner (his own row on this page)."
   ],
   "artifact": null,
   "sources": [
    "main's BUILDER CONTINUATION of 2026-11-08 carrying Codex's independent live re-review of the same date under Omar's standing authority, relayed by main (hive/EXECUTION_LOG.md): the question's CURRENT sentence must agree with what the build does and must ask exactly one thing. tasks-correction-2 v2.0.0, 2026-11-08."
   ],
   "proposal": null,
   "freedPart": null,
   "sendScope": null,
   "outcome": "Open: 1 row waits on this one answer; nothing moves on it until Omar gives it.",
   "next": "Pick a choice or type an answer and save it; it stays on this device until you copy all answers into the line.",
   "questionShown": "Real data — when do you say the real data is connected and the demo header comes off?",
   "whyShown": "Until your word, every figure carries the demo header. It also waits on the owner's QuickBooks login — a login, not an integration — and on the migration of his workbook, which is not specified yet.",
   "unlocks": "Your answer moves 1 row: Demo data → real data — Omar's word that the real data is connected….",
   "unlocksShown": "Your answer moves 1 row: Demo data → real data — Omar's word that the real data is connected…."
  },
  {
   "n": 14,
   "key": "connect",
   "ids": [
    "R01",
    "R10",
    "R13",
    "M-CON"
   ],
   "question": "Do we connect the owner's email, calendar and workbook to the app — each one only after he grants that one access?",
   "why": "Reading a mailbox was never ruled on; the no-send rule covers sending only. These rows wait on that word and on the owner's logins.",
   "choices": [
    {
     "value": "email",
     "label": "Yes to the email, once the owner grants that one access"
    },
    {
     "value": "calendar",
     "label": "Yes to the calendar, once he grants that one access"
    },
    {
     "value": "workbook",
     "label": "Yes to the workbook, once he grants that one access"
    },
    {
     "value": "no",
     "label": "No — none of the three"
    },
    {
     "value": "later",
     "label": "Later"
    }
   ],
   "cards": [
    "office-connect"
   ],
   "covers": [
    {
     "id": "R01",
     "title": "Connect the operating tools",
     "state": "blocked",
     "waitingOn": "Omar",
     "card": "office-connect",
     "status5": "needs-omar"
    },
    {
     "id": "R10",
     "title": "Link calendar events to jobs",
     "state": "blocked",
     "waitingOn": "Omar",
     "card": "office-connect",
     "status5": "needs-omar"
    },
    {
     "id": "R13",
     "title": "Monitor relevant email activity",
     "state": "blocked",
     "waitingOn": "Omar",
     "card": "office-connect",
     "status5": "needs-omar"
    },
    {
     "id": "M-CON",
     "title": "Connect email, calendar, workbook and assistant workflows",
     "state": "blocked",
     "waitingOn": "Omar",
     "card": "office-connect",
     "status5": "needs-omar"
    }
   ],
   "fallback": false,
   "rq": false,
   "openBecause": "Reading a mailbox, a calendar or the workbook was never ruled on; the no-send rule covers sending only, and the owner's logins are needed.",
   "decisionTrace": "RULE #1 is sending — reading a mailbox was never ruled on (vault/topics/projects/Fieldflo.md, 2026-10); canonical rows waiting on Omar (v2.4, 2026-10-31)",
   "splitFrom": null,
   "plainTitle": "Connecting the owner's email, calendar and workbook",
   "rewordedFrom": {
    "n": 16,
    "question": "Do we connect the owner's email, calendar and workbook to the app?",
    "source": "Omar's independent live review of the All Tasks page, 2026-11-07 22:13 UTC Telegram 2233, carried by main's Builder order 2026-11-07T23:10Z (hive/EXECUTION_LOG.md); pin v2.3.0 (hive/checks/2026-11-07_requirements-tasks-b3.md, 2026-11-07) (bounded: each connection only after the owner grants that one access; reading, never sending)"
   },
   "rewordedAgain": null,
   "whyOnlyOmar": "Reading the owner's mailbox, calendar or workbook was never ruled on — the no-send rule covers sending only — and his authorisation says a mailbox read is not approved by it; that leaves the word his.",
   "whyOnlyOmarSources": [
    "Omar 2026-10-06 16:43 UTC — vault/topics/decisions/implementation now, on your runtime.md: implementation on demo data is authorised; \"It does not approve a hosting bill, a server, a database or a mailbox read\"; no new paid services",
    "vault/topics/people/Omar.md, 2026-10-05 and 2026-10-06 Now-blocks: \"may the hive read, not send, the owner's email?\" — nobody has ever ruled on reading",
    "canonical accounting v2.4, generated 2026-10-31 (materials/canonical/2026-10-31_canonical-tasks.v2.4.json): the rows under this question read waiting on Omar or on both"
   ],
   "supersededBy": null,
   "appliedAnswers": [],
   "decision": "Whether the app may read the owner's email, calendar and workbook, one at a time and each only after he grants that one access, reading only and never sending.",
   "prerequisites": [
    "The owner grants access to each system, one at a time.",
    "A hosting account where the connections can live (the hosting question above)."
   ],
   "artifact": null,
   "sources": [
    "main's BUILDER CONTINUATION of 2026-11-08 carrying Codex's independent live re-review of the same date under Omar's standing authority, relayed by main (hive/EXECUTION_LOG.md): the question's CURRENT sentence must agree with what the build does and must ask exactly one thing. tasks-correction-2 v2.0.0, 2026-11-08."
   ],
   "proposal": null,
   "freedPart": null,
   "sendScope": null,
   "outcome": "Open: 4 rows wait on this one answer; nothing moves on them until Omar gives it.",
   "next": "Pick a choice or type an answer and save it; it stays on this device until you copy all answers into the line.",
   "questionShown": "Do we connect the owner's email, calendar and workbook to the app — each one only after he grants that one access?",
   "whyShown": "Reading a mailbox was never ruled on; the no-send rule covers sending only. These rows wait on that word and on the owner's logins.",
   "unlocks": "Your answer moves 4 rows: Connect the operating tools; Link calendar events to jobs and 2 more.",
   "unlocksShown": "Your answer moves 4 rows: Connect the operating tools; Link calendar events to jobs and 2 more."
  },
  {
   "n": 15,
   "key": "assistant",
   "ids": [
    "D08",
    "D09",
    "M-AI",
    "GL-014"
   ],
   "question": "The assistant by text — may it change records when told to ('bump Crew B to Thursday'), with a review step before the change lands?",
   "why": "Today it only answers from the data. Letting it act needs your rule on which records it may change; the office reviews every change before it lands, and the office is the reviewer named here.",
   "choices": [
    {
     "value": "review",
     "label": "Yes — the schedule, a crew, a shift and a timesheet, with the office reviewing every change before it lands"
    },
    {
     "value": "answers",
     "label": "Answers only, no changes"
    },
    {
     "value": "later",
     "label": "Later"
    }
   ],
   "cards": [
    "office-ai"
   ],
   "covers": [
    {
     "id": "D08",
     "title": "Keep business records as the authoritative data",
     "state": "blocked",
     "waitingOn": "Omar",
     "card": "office-ai",
     "status5": "needs-omar"
    },
    {
     "id": "D09",
     "title": "Monitor assistant quality and usage",
     "state": "blocked",
     "waitingOn": "Omar",
     "card": "office-ai",
     "status5": "needs-omar"
    },
    {
     "id": "M-AI",
     "title": "Reviewed assistant actions and authoritative records",
     "state": "blocked",
     "waitingOn": "Omar",
     "card": "office-ai",
     "status5": "needs-omar"
    },
    {
     "id": "GL-014",
     "title": "Telling it to change something by text — \"bump Crew B to Thursday\", \"mark 17 Ave complete\" — and it changes, and texts back the one line that changed",
     "state": "blocked",
     "waitingOn": "Omar",
     "card": "office-ai",
     "status5": "needs-omar"
    }
   ],
   "fallback": false,
   "rq": false,
   "openBecause": "Letting the assistant change records needs your rule on what it may change, who reviews it and how its quality is watched; no dated word settles it.",
   "decisionTrace": "canonical rows waiting on Omar (v2.4, 2026-10-31); no decision page on this line names the assistant's write rights",
   "splitFrom": null,
   "plainTitle": "The assistant changing records",
   "rewordedFrom": null,
   "rewordedAgain": null,
   "whyOnlyOmar": "Letting the assistant change records is a rule on what it may touch and who reviews it; no decision page on this line sets that rule, so it is his to set.",
   "whyOnlyOmarSources": [
    "canonical accounting v2.4, generated 2026-10-31 (materials/canonical/2026-10-31_canonical-tasks.v2.4.json): the rows under this question read waiting on Omar or on both",
    "vault/topics/decisions/ (every page read 2026-11-07): no page names the assistant's write rights",
    "RULE #1 (AGENTS.md, standing since Omar 2026-09-10 19:17 UTC): nothing sends, publishes or contacts anyone without Omar's explicit OK"
   ],
   "supersededBy": null,
   "appliedAnswers": [],
   "decision": "Which record kinds the text assistant may change when told to — the schedule, a crew, a shift or a timesheet — always with a review step before the change lands.",
   "prerequisites": [
    "The texting number switched on (the texting-number question above).",
    "The review step built and shown on demo data before any change lands."
   ],
   "artifact": null,
   "sources": [
    "main's BUILDER CONTINUATION of 2026-11-08 carrying Codex's independent live re-review of the same date under Omar's standing authority, relayed by main (hive/EXECUTION_LOG.md): the question's CURRENT sentence must agree with what the build does and must ask exactly one thing. tasks-correction-2 v2.0.0, 2026-11-08."
   ],
   "proposal": null,
   "freedPart": null,
   "sendScope": null,
   "outcome": "Open: 4 rows wait on this one answer; nothing moves on them until Omar gives it.",
   "next": "Pick a choice or type an answer and save it; it stays on this device until you copy all answers into the line.",
   "questionShown": "The assistant by text — may it change records when told to ('bump Crew B to Thursday'), with a review step before the change lands?",
   "whyShown": "Today it only answers from the data. Letting it act needs your rule on which records it may change; the office reviews every change before it lands, and the office is the reviewer named here.",
   "unlocks": "Your answer moves 4 rows: Keep business records as the authoritative data; Monitor assistant quality and usage and 2 more.",
   "unlocksShown": "Your answer moves 4 rows: Keep business records as the authoritative data; Monitor assistant quality and usage and 2 more."
  },
  {
   "n": 16,
   "key": "privacy-location",
   "ids": [
    "V40·codex",
    "GL-019"
   ],
   "question": "Clock-in location — do we record where a man clocks in from and who gets to see it?",
   "why": "The owner has not answered the GPS question; until a rule is set nothing records a man's location. One choice: collect it or not, and for whom.",
   "choices": [
    {
     "value": "owner",
     "label": "Record it — The owner's login only"
    },
    {
     "value": "managers",
     "label": "Record it — The owner and managers"
    },
    {
     "value": "no",
     "label": "Do not record it"
    }
   ],
   "cards": [
    "safe-privacy"
   ],
   "covers": [
    {
     "id": "V40·codex",
     "title": "Location verification request",
     "state": "blocked",
     "waitingOn": "Omar",
     "card": "safe-privacy",
     "status5": "needs-omar"
    },
    {
     "id": "GL-019",
     "title": "GPS clock-in / photo clock-out (FlōTime) — location-verified start, photo-confirmed stop, buddy-punch prevention; and where each man clocked in from, includi…",
     "state": "blocked",
     "waitingOn": "Both",
     "card": "safe-privacy",
     "status5": "needs-both"
    }
   ],
   "fallback": false,
   "rq": false,
   "openBecause": "GPS on clock-in needs one rule on whether it is collected and who sees it; the owner has not answered the GPS question and no dated word on this line sets the rule.",
   "decisionTrace": "canonical rows waiting on Omar or on both (v2.4, 2026-10-31); the owner's GPS answer pending since 2026-10-03; split from the combined privacy question on 2026-11-07 (Omar's live review, Telegram 2233)",
   "splitFrom": {
    "key": "privacy",
    "n": 19,
    "question": "GPS on clock-in and HR privacy — do we show where a man clocks in from, and who may open HR records?"
   },
   "plainTitle": "Where a man clocks in",
   "rewordedFrom": null,
   "rewordedAgain": null,
   "whyOnlyOmar": "Whether the app records where a man clocks in from, and who may see it, is a privacy rule for the company; the owner has not answered the GPS question and no dated word on this line sets the rule.",
   "whyOnlyOmarSources": [
    "vault/topics/people/Omar.md, 2026-10-03: the owner's GPS answer pending",
    "canonical accounting v2.4, generated 2026-10-31 (materials/canonical/2026-10-31_canonical-tasks.v2.4.json): the rows under this question read waiting on Omar or on both",
    "AGENTS.md rail 4 (2026-09-10): owner-only records stay in the owner's drawer"
   ],
   "supersededBy": null,
   "appliedAnswers": [],
   "decision": "Whether the app records where a man clocks in from, and if so who may see it: the owner alone, the owner and his managers, or nobody.",
   "prerequisites": [
    "The owner's own answer on GPS (his own row on this page: do you want to see where each man clocks in from?).",
    "The texting line or the app clock-in switched on, so there is a clock-in to record."
   ],
   "artifact": null,
   "sources": [],
   "proposal": null,
   "freedPart": null,
   "sendScope": null,
   "outcome": "Open: 2 rows wait on this one answer; nothing moves on them until Omar gives it.",
   "next": "Pick a choice or type an answer and save it; it stays on this device until you copy all answers into the line.",
   "questionShown": "Clock-in location — do we record where a man clocks in from and who gets to see it?",
   "whyShown": "The owner has not answered the GPS question; until a rule is set nothing records a man's location. One choice: collect it or not, and for whom.",
   "unlocks": "Your answer moves 2 rows: Location verification request; GPS clock-in / photo clock-out (FlōTime) — location-verified start….",
   "unlocksShown": "Your answer moves 2 rows: Location verification request; GPS clock-in / photo clock-out (FlōTime) — location-verified start…."
  },
  {
   "n": 17,
   "key": "privacy-hr",
   "ids": [
    "D11",
    "M-PRIV"
   ],
   "question": "HR records — who may open a man's HR file: the owner alone, or the owner and his managers?",
   "why": "The HR file holds a man's employee number, pay group and union; one rule says who may open it. The write-ups are asked below, separately: this question does not cover them.",
   "choices": [
    {
     "value": "owner",
     "label": "The owner only"
    },
    {
     "value": "managers",
     "label": "The owner and managers"
    },
    {
     "value": "ask",
     "label": "Ask the owner"
    }
   ],
   "cards": [],
   "covers": [
    {
     "id": "D11",
     "title": "Keep location and HR access limited",
     "state": "blocked",
     "waitingOn": "Omar",
     "card": "safe-privacy",
     "status5": "needs-omar"
    },
    {
     "id": "M-PRIV",
     "title": "Location and HR privacy controls",
     "state": "blocked",
     "waitingOn": "Omar",
     "card": "safe-privacy",
     "status5": "needs-omar"
    }
   ],
   "fallback": false,
   "rq": false,
   "openBecause": "Who may open a man's HR records needs a rule from you and the owner; no dated word on this line sets it.",
   "decisionTrace": "canonical rows waiting on Omar or on both (v2.4, 2026-10-31); split from the combined privacy question on 2026-11-07 (Omar's live review, Telegram 2233)",
   "splitFrom": {
    "key": "privacy",
    "n": 19,
    "question": "GPS on clock-in and HR privacy — do we show where a man clocks in from, and who may open HR records?"
   },
   "plainTitle": "Who may open a man's HR file",
   "rewordedFrom": null,
   "rewordedAgain": null,
   "whyOnlyOmar": "Who may open a man's HR file is a privacy rule for the company, a choice about what people see and not a repair; no dated word on this line sets it.",
   "whyOnlyOmarSources": [
    "vault/topics/people/Omar.md, 2026-10-03: the owner's GPS answer pending",
    "canonical accounting v2.4, generated 2026-10-31 (materials/canonical/2026-10-31_canonical-tasks.v2.4.json): the rows under this question read waiting on Omar or on both",
    "AGENTS.md rail 4 (2026-09-10): owner-only records stay in the owner's drawer"
   ],
   "supersededBy": null,
   "appliedAnswers": [],
   "decision": "Who may open a man's HR file: the owner alone, or the owner and his managers.",
   "prerequisites": [
    "The owner's word on who his managers are (the Team & Access page lists the logins).",
    "The crew list with real people on it (the owner's own row on this page), so the rule applies to real records."
   ],
   "artifact": null,
   "sources": [
    "main's BUILDER CONTINUATION of 2026-11-08 carrying Codex's independent live re-review of the same date under Omar's standing authority, relayed by main (hive/EXECUTION_LOG.md): the question's CURRENT sentence must agree with what the build does and must ask exactly one thing. tasks-correction-2 v2.0.0, 2026-11-08."
   ],
   "proposal": null,
   "freedPart": null,
   "sendScope": null,
   "outcome": "Open: 2 rows wait on this one answer; nothing moves on them until Omar gives it.",
   "next": "Pick a choice or type an answer and save it; it stays on this device until you copy all answers into the line.",
   "questionShown": "HR records — who may open a man's HR file: the owner alone, or the owner and his managers?",
   "whyShown": "The HR file holds a man's employee number, pay group and union; one rule says who may open it. The write-ups are asked below, separately: this question does not cover them.",
   "unlocks": "Your answer moves 2 rows: Keep location and HR access limited; Location and HR privacy controls.",
   "unlocksShown": "Your answer moves 2 rows: Keep location and HR access limited; Location and HR privacy controls."
  },
  {
   "n": 18,
   "key": "jha",
   "ids": [
    "O-WEATHER"
   ],
   "question": "Live weather on the job site — may the app call an outside weather feed at all?",
   "why": "The hazard sheet already shows the site weather with how fresh it is, on seeded demo numbers, and the outside feed is off. The one open choice is whether the app may call an outside feed for real numbers at all, and that is yours. The proposal below names the service, what it costs, every field that would leave the box and the one setting that would switch it on; its suitability, its cost and that data disclosure are checked and confirmed before any call is made. Picking the technical service is the build's work.",
   "choices": [
    {
     "value": "yes",
     "label": "Yes — switch on the free feed set out in the proposal"
    },
    {
     "value": "no",
     "label": "No — keep the seeded numbers on the hazard sheet"
    },
    {
     "value": "later",
     "label": "Not yet — leave the outside call off for now"
    }
   ],
   "cards": [
    "crew-jha"
   ],
   "covers": [
    {
     "id": "O-WEATHER",
     "title": "Live job weather with visible freshness",
     "state": "blocked",
     "waitingOn": "Omar",
     "card": "crew-jha",
     "status5": "needs-omar"
    }
   ],
   "fallback": false,
   "rq": false,
   "openBecause": "Whether the app may call anything outside at all is your word, and no dated decision gives it. The proposal below is prepared, not applied: nothing is activated and no call is made until your word gives it; the technical pick is the build's, and the broader standing rule that was carried here has no dated decision behind it.",
   "decisionTrace": "O-WEATHER — no new paid services (vault/topics/decisions/implementation now, on your runtime.md, 2026-10-06); canonical v2.4 (2026-10-31) waiting on Omar; V41·codex and M-ACK decided 2026-10-06 (implementation now)",
   "splitFrom": null,
   "plainTitle": "The weather feed for the job site",
   "rewordedFrom": {
    "n": 20,
    "question": "JHA — live weather on the job, a daily JHA reused with a fresh review, and auditor acknowledgements: build on demo data?",
    "source": "Omar 2026-11-07 17:06 UTC Telegram 2174 (one decision per question, plain words, the recorded authorizations applied); main BUILDER ORDER 2026-11-07T17:40Z (hive/EXECUTION_LOG.md); Omar's independent live review of the All Tasks page, 2026-11-07 22:13 UTC Telegram 2233, carried by main's Builder order 2026-11-07T23:10Z (hive/EXECUTION_LOG.md); pin v2.3.0 (hive/checks/2026-11-07_requirements-tasks-b3.md, 2026-11-07) (the why no longer derives the free feed from the no-paid-services rule)"
   },
   "rewordedAgain": {
    "question": "Live weather on the job site — which weather feed may the app use?",
    "why": "The earlier wording asked you to pick the feed and carried the standing rule “Your word naming the feed, free or paid; the app calls no outside service until then.” Naming an outside weather service is yours on a dated source of 2026-10-04; the blanket part of that rule — that the app may call nothing outside at all — has no dated decision behind it, and the technical pick is the build's work, not yours. Kept here as history, not rewritten away.",
    "source": "Codex review ruling 2026-11-08T04:12Z, under Omar's standing instructions, relayed by main, and main's ORDER 2026-11-08T03:26Z carrying Omar 2026-11-08 03:24 UTC (hive/EXECUTION_LOG.md); tasks-correction v1.0.0, 2026-11-08. The ruling authorised the source reconciliation and the preparation of a proposal; it approved no feed and answered no question."
   },
   "whyOnlyOmar": "A live weather feed is an outside service the app would call, and whether it may call anything outside at all is his word; no dated decision on record gives it.",
   "whyOnlyOmarSources": [
    "vault/topics/people/Omar.md, the 2026-10-04 Now-block (read 2026-11-07): what is still his — hosting, the day and the money for the outbound line, naming an outside weather service, the Team page demo login, the quiet offer on the nightly report",
    "Omar 2026-10-06 16:43 UTC — vault/topics/decisions/implementation now, on your runtime.md: implementation on demo data is authorised; \"It does not approve a hosting bill, a server, a database or a mailbox read\"; no new paid services",
    "canonical accounting v2.4, generated 2026-10-31 (materials/canonical/2026-10-31_canonical-tasks.v2.4.json): the rows under this question read waiting on Omar or on both"
   ],
   "supersededBy": null,
   "appliedAnswers": [],
   "decision": "Whether the app may call an outside weather feed at all: yes to the free feed set out in the proposal below, no, or not yet. The build picks the provider.",
   "prerequisites": [
    "Your word on whether an outside call may be made at all; until it is given, the hazard sheet keeps its seeded numbers.",
    "Nothing to buy and nothing to sign up for: the proposal below needs no account, no key and no bill."
   ],
   "artifact": null,
   "sources": [
    "vault/topics/people/Omar.md, the 2026-10-04 Now-block (read 2026-11-08): what is still his includes naming an outside weather service — the dated authority for the weather part of the prerequisite",
    "the broader standing rule “the app calls no outside service until then”: no dated decision on record carries it, so it is stated here as unsupported rather than kept as an active rule — tasks-correction v1.0.0, 2026-11-08",
    "portal/app-jha.js (read 2026-11-08): the weather panel and its freshness label run on seeded demo numbers today, so the demo part of the row is not held behind the outside call",
    "main's BUILDER CONTINUATION of 2026-11-08 carrying Codex's independent live re-review of the same date under Omar's standing authority, relayed by main (hive/EXECUTION_LOG.md): the question's CURRENT sentence must agree with what the build does and must ask exactly one thing. tasks-correction-2 v2.0.0, 2026-11-08."
   ],
   "proposal": {
    "title": "A concrete proposal for the live weather call — prepared, not switched on",
    "provider": "Open-Meteo (open-meteo.com), a public weather service with a free tier",
    "cost": "no bill and no cost: the free tier is published at $0 a month, with no charge for the volume one job site needs",
    "account": "no account and no API key are needed for that free tier",
    "whatLeaves": "every field that leaves the box, named in full: the job site's latitude and longitude, the day asked for, the time zone that day is read in, the unit system for temperature and wind, and the network address of the box making the call, which any outside call reveals. No customer, no crew member, no employee and no job record is sent, and no other field is",
    "activationAction": "the activation action is one setting in the build: flip the setting that lets the hazard sheet call the feed, after which the panel reads live numbers instead of seeded ones",
    "readBack": "the panel already shows the weather and how fresh it is on seeded demo numbers (portal/app-jha.js, the weather panel built under the go-live weather row), so switching the call on changes where the numbers come from and nothing else",
    "verified": "prepared from the provider's published terms as recorded here and NOT verified by a call from this box: no outside call was made, no account was created and nothing was spent. The suitability, the cost and the data disclosure above are confirmed before any call is switched on.",
    "notAnApproval": "this is a proposal for Omar to answer. Nothing here switches anything on, nothing is activated and the one open choice stays his, unanswered.",
    "source": "Codex review ruling 2026-11-08T04:12Z, under Omar's standing instructions, relayed by main (hive/EXECUTION_LOG.md): the source reconciliation and the PREPARATION of a concrete proposal were authorised; provider activation, any outside call and any spend were not. tasks-correction v1.0.0, 2026-11-08.",
    "suitability": "suitability: the free tier serves current and forecast temperature, wind and humidity for one set of coordinates — exactly the fields the hazard sheet's panel renders — and that fit is checked against the panel's own fields before any call is switched on"
   },
   "freedPart": "the panel on the hazard sheet is build work on seeded numbers and is not held behind it",
   "sendScope": null,
   "outcome": "Open: 1 row under this answer; the panel on the hazard sheet is build work on seeded numbers and is not held behind it.",
   "next": "Pick a choice or type an answer and save it; it stays on this device until you copy all answers into the line.",
   "questionShown": "Live weather on the job site — may the app call an outside weather feed at all?",
   "whyShown": "The hazard sheet already shows the site weather with how fresh it is, on seeded demo numbers, and the outside feed is off. The one open choice is whether the app may call an outside feed for real numbers at all, and that is yours. The proposal below names the service, what it costs, every field that would leave the box and the one setting that would switch it on; its suitability, its cost and that data disclosure are checked and confirmed before any call is made. Picking the technical service is the build's work.",
   "unlocks": "Your answer moves 1 row: Live job weather with visible freshness.",
   "unlocksShown": "Your answer moves 1 row: Live job weather with visible freshness."
  },
  {
   "n": 19,
   "key": "estimator",
   "ids": [
    "V50·codex",
    "M-TAKE",
    "GL-038"
   ],
   "question": "The AI takeoff and estimate — may a number it makes ever go in front of a customer?",
   "why": "The seat is drafted on demo quotes. Whether a number the AI makes may ever be shown to a customer is your rule to set. The optional takeoff experiment is its own row and is not settled by this question; the owner's past quotes were put off to later.",
   "choices": [
    {
     "value": "yes",
     "label": "Yes, after the office checks it"
    },
    {
     "value": "internal",
     "label": "Internal use only — never shown to a customer"
    },
    {
     "value": "drop",
     "label": "Drop the AI estimate"
    }
   ],
   "cards": [
    "sales-est"
   ],
   "covers": [
    {
     "id": "V50·codex",
     "title": "Optional takeoff and estimating exploration",
     "state": "blocked",
     "waitingOn": "Omar",
     "card": "sales-est",
     "status5": "needs-omar"
    },
    {
     "id": "M-TAKE",
     "title": "Optional drawing takeoff and estimate experiment",
     "state": "blocked",
     "waitingOn": "Omar",
     "card": "sales-est",
     "status5": "needs-omar"
    },
    {
     "id": "GL-038",
     "title": "Takeoff & estimating (AI-assisted, \"Let FLO cook!\") and bid items dropping into a proposal — the Estimator seat's ground; the owner pushed back (\"I know our estima…",
     "state": "blocked",
     "waitingOn": "Omar",
     "card": "sales-est",
     "status5": "needs-omar"
    }
   ],
   "fallback": false,
   "rq": false,
   "openBecause": "Whether an AI estimate is ever shown to a customer, and whether the optional takeoff experiment is in scope, are your calls; the build itself is the hive's once you say.",
   "decisionTrace": "canonical rows waiting on Omar (v2.4, 2026-10-31); the owner's past quotes were put off \"later\" (Omar 2026-10-03 00:31 UTC, vault/topics/people/Omar.md)",
   "splitFrom": null,
   "plainTitle": "The AI takeoff and estimate",
   "rewordedFrom": {
    "n": 21,
    "question": "The Estimator and AI takeoff — build it on the owner's past quotes, or wait for them?",
    "source": "main BUILDER DELTA 2026-11-07T18:20Z carrying Omar 18:15Z Telegram 2186 (hive/EXECUTION_LOG.md); pin v2.1.0 (hive/checks/2026-11-07_requirements-tasks-b3.md, 2026-11-07)"
   },
   "rewordedAgain": null,
   "whyOnlyOmar": "Whether an AI-made estimate is ever put in front of a customer is a rule about the business's own quotes; it is his to set, and the owner's past quotes were put off to later by his own word.",
   "whyOnlyOmarSources": [
    "Omar 2026-10-03 00:31 UTC — The owner's past quotes put off \"later\" (vault/topics/people/Omar.md)",
    "vault/topics/decisions/the agent build order.md (2026-09-17): The Estimator needs past quotes, or the assistant he trained",
    "canonical accounting v2.4, generated 2026-10-31 (materials/canonical/2026-10-31_canonical-tasks.v2.4.json): the rows under this question read waiting on Omar or on both"
   ],
   "supersededBy": null,
   "appliedAnswers": [],
   "decision": "Whether a number the AI takeoff makes may ever reach a customer, or stays internal to the office and the demo build until you say otherwise.",
   "prerequisites": [
    "A handful of the owner's past quotes, so the estimate runs on his pricing (his own row on this page).",
    "The office's check step in front of every outgoing number."
   ],
   "artifact": null,
   "sources": [
    "main's BUILDER CONTINUATION of 2026-11-08 carrying Codex's independent live re-review of the same date under Omar's standing authority, relayed by main (hive/EXECUTION_LOG.md): the question's CURRENT sentence must agree with what the build does and must ask exactly one thing. tasks-correction-2 v2.0.0, 2026-11-08."
   ],
   "proposal": null,
   "freedPart": null,
   "sendScope": null,
   "outcome": "Open: 3 rows wait on this one answer; nothing moves on them until Omar gives it.",
   "next": "Pick a choice or type an answer and save it; it stays on this device until you copy all answers into the line.",
   "questionShown": "The AI takeoff and estimate — may a number it makes ever go in front of a customer?",
   "whyShown": "The seat is drafted on demo quotes. Whether a number the AI makes may ever be shown to a customer is your rule to set. The optional takeoff experiment is its own row and is not settled by this question; the owner's past quotes were put off to later.",
   "unlocks": "Your answer moves 3 rows: Optional takeoff and estimating exploration; Optional drawing takeoff and estimate experiment and 1 more.",
   "unlocksShown": "Your answer moves 3 rows: Optional takeoff and estimating exploration; Optional drawing takeoff and estimate experiment and 1 more."
  },
  {
   "n": 20,
   "key": "install",
   "ids": [
    "O-STORE"
   ],
   "question": "An app-store listing for the app — pay for one, or stay with the install link?",
   "why": "Installing the app on phones and desktops with safe updates is build time and ships either way. A store listing costs money — about $25 a year for a developer account in someone's name, and a review on each release — so that part is your word.",
   "choices": [
    {
     "value": "store",
     "label": "Pay for a store listing"
    },
    {
     "value": "link",
     "label": "No store — the install link only"
    },
    {
     "value": "later",
     "label": "Later"
    }
   ],
   "cards": [
    "plat-install"
   ],
   "covers": [
    {
     "id": "O-STORE",
     "title": "Optional public app-store distribution",
     "state": "blocked",
     "waitingOn": "Omar",
     "card": "plat-install",
     "status5": "needs-omar"
    }
   ],
   "fallback": false,
   "rq": false,
   "openBecause": "An app-store listing costs money and time and needs an account in someone's name; the install and update rows ship one way or the other on that choice.",
   "decisionTrace": "O-STORE — no new paid services (vault/topics/decisions/implementation now, on your runtime.md, 2026-10-06); canonical rows waiting on Omar (v2.4, 2026-10-31)",
   "splitFrom": null,
   "plainTitle": "The app store",
   "rewordedFrom": {
    "n": 22,
    "question": "Install — the app on phones and desktop as an installable app with safe updates and rollback; and an app-store listing, or not?",
    "source": "main BUILDER DELTA 2026-11-07T18:20Z carrying Omar 18:15Z Telegram 2186 (hive/EXECUTION_LOG.md); pin v2.1.0 (hive/checks/2026-11-07_requirements-tasks-b3.md, 2026-11-07)"
   },
   "rewordedAgain": null,
   "whyOnlyOmar": "A store listing costs money and needs a developer account in someone's name; no new paid service starts without his word, while the install and update work ships one way or the other on that choice.",
   "whyOnlyOmarSources": [
    "Omar 2026-10-06 16:43 UTC — vault/topics/decisions/implementation now, on your runtime.md: implementation on demo data is authorised; \"It does not approve a hosting bill, a server, a database or a mailbox read\"; no new paid services",
    "canonical accounting v2.4, generated 2026-10-31 (materials/canonical/2026-10-31_canonical-tasks.v2.4.json): the rows under this question read waiting on Omar or on both"
   ],
   "supersededBy": null,
   "appliedAnswers": [],
   "decision": "Whether Makki pays for an app-store listing and the developer account in someone's name, or the app stays on its install link.",
   "prerequisites": [],
   "artifact": null,
   "sources": [
    "main's BUILDER CONTINUATION of 2026-11-08 carrying Codex's independent live re-review of the same date under Omar's standing authority, relayed by main (hive/EXECUTION_LOG.md): the question's CURRENT sentence must agree with what the build does and must ask exactly one thing. tasks-correction-2 v2.0.0, 2026-11-08."
   ],
   "proposal": null,
   "freedPart": null,
   "sendScope": null,
   "outcome": "Open: 1 row waits on this one answer; nothing moves on it until Omar gives it.",
   "next": "Pick a choice or type an answer and save it; it stays on this device until you copy all answers into the line.",
   "questionShown": "An app-store listing for the app — pay for one, or stay with the install link?",
   "whyShown": "Installing the app on phones and desktops with safe updates is build time and ships either way. A store listing costs money — about $25 a year for a developer account in someone's name, and a review on each release — so that part is your word.",
   "unlocks": "Your answer moves 1 row: Optional public app-store distribution.",
   "unlocksShown": "Your answer moves 1 row: Optional public app-store distribution."
  },
  {
   "n": 21,
   "key": "proposals",
   "ids": [
    "GL-034",
    "GL-039"
   ],
   "question": "Proposals — may the app send a proposal for e-signature straight from the app?",
   "why": "Sending a proposal out for signature is a send, held until you allow it. Turning an accepted quote into a job is build work: it is not held by this answer and the hive builds it on demo data either way.",
   "choices": [
    {
     "value": "owner",
     "label": "Yes — when the office marks a quote accepted, the app sends the proposal to the customer by email for signature, after the owner OKs the wording"
    },
    {
     "value": "manual",
     "label": "No — the office sends every proposal by hand"
    },
    {
     "value": "later",
     "label": "Later"
    }
   ],
   "cards": [
    "sales-quotes"
   ],
   "covers": [
    {
     "id": "GL-034",
     "title": "E-signature on proposals — send-for-signature directly from the platform; proposals are printed / PDF, no send, no signature, and the owner sends",
     "state": "blocked",
     "waitingOn": "Omar",
     "card": "sales-quotes",
     "status5": "needs-omar"
    },
    {
     "id": "GL-039",
     "title": "Auto-send — SMS, email, e-sign (\"Ready SMS\", Auto-Send, send-for-signature): theirs are real and ours are deliberately not; nothing sends without Omar's expl…",
     "state": "blocked",
     "waitingOn": "Omar",
     "card": "office-msg",
     "status5": "needs-omar"
    }
   ],
   "fallback": false,
   "rq": false,
   "openBecause": "Sending a proposal out for signature is a send, held by RULE #1 until you allow it; the build work on the same subject is not held by it.",
   "decisionTrace": "R03 — RULE #1 (sending); canonical rows waiting on Omar (v2.4, 2026-10-31)",
   "splitFrom": null,
   "plainTitle": "E-signature on proposals",
   "rewordedFrom": {
    "n": 23,
    "question": "Proposals — e-signature straight from the app, and accepted quotes turning into jobs?",
    "source": "Omar 2026-11-07 17:06 UTC Telegram 2174 (one decision per question, plain words, the recorded authorizations applied); main BUILDER ORDER 2026-11-07T17:40Z (hive/EXECUTION_LOG.md)"
   },
   "rewordedAgain": null,
   "whyOnlyOmar": "Sending a proposal out for signature is a send; the no-send rule holds every send until he allows it by name.",
   "whyOnlyOmarSources": [
    "RULE #1 (AGENTS.md, standing since Omar 2026-09-10 19:17 UTC): nothing sends, publishes or contacts anyone without Omar's explicit OK",
    "canonical accounting v2.4, generated 2026-10-31 (materials/canonical/2026-10-31_canonical-tasks.v2.4.json): the rows under this question read waiting on Omar or on both"
   ],
   "supersededBy": null,
   "appliedAnswers": [],
   "decision": "Whether the app may send a proposal out for signature at all — only the send is asked here; turning an accepted quote into a job is build work and is not settled by this answer.",
   "prerequisites": [],
   "artifact": null,
   "sources": [
    "main's BUILDER CONTINUATION of 2026-11-08 carrying Codex's independent live re-review of the same date under Omar's standing authority, relayed by main (hive/EXECUTION_LOG.md): the question's CURRENT sentence must agree with what the build does and must ask exactly one thing. tasks-correction-2 v2.0.0, 2026-11-08."
   ],
   "proposal": null,
   "freedPart": null,
   "sendScope": null,
   "outcome": "Open: 2 rows wait on this one answer; nothing moves on them until Omar gives it.",
   "next": "Pick a choice or type an answer and save it; it stays on this device until you copy all answers into the line.",
   "questionShown": "Proposals — may the app send a proposal for e-signature straight from the app?",
   "whyShown": "Sending a proposal out for signature is a send, held until you allow it. Turning an accepted quote into a job is build work: it is not held by this answer and the hive builds it on demo data either way.",
   "unlocks": "Your answer moves 2 rows: E-signature on proposals — send-for-signature directly from the…; Auto-send — SMS, email, e-sign (\"Ready SMS\", Auto-Send….",
   "unlocksShown": "Your answer moves 2 rows: E-signature on proposals — send-for-signature directly from the…; Auto-send — SMS, email, e-sign (\"Ready SMS\", Auto-Send…."
  },
  {
   "n": 22,
   "key": "invoicing",
   "ids": [
    "R07",
    "R09"
   ],
   "question": "Invoicing — may the app send invoices itself, or does the owner keep sending every one?",
   "why": "Today the Collector drafts every invoice and the owner sends it himself. The drafting is built and running and is not held by this answer — drafting continues either way; only whether the app itself ever sends one is asked here.",
   "choices": [
    {
     "value": "owner",
     "label": "The owner keeps sending every invoice by hand"
    },
    {
     "value": "app",
     "label": "Yes — when the owner marks a job ready to bill, the app sends the invoice to the customer by email, after he OKs it"
    },
    {
     "value": "later",
     "label": "Later"
    }
   ],
   "cards": [
    "fin-invoice"
   ],
   "covers": [
    {
     "id": "R07",
     "title": "Offer conversational invoicing",
     "state": "blocked",
     "waitingOn": "Omar",
     "card": "fin-invoice",
     "status5": "needs-omar"
    },
    {
     "id": "R09",
     "title": "Remove owner mediated invoicing handoffs",
     "state": "blocked",
     "waitingOn": "Omar",
     "card": "fin-invoice",
     "status5": "needs-omar"
    }
   ],
   "fallback": false,
   "rq": false,
   "openBecause": "Whether the app may send invoices itself changes who sends (RULE #1); the Collector's drafting runs today and is not held by this answer.",
   "decisionTrace": "RULE #1; vault/topics/decisions/the money reports live in the app.md (2026-10-10) — the Collector is a convenience, never the route; canonical rows waiting on Omar (v2.4, 2026-10-31)",
   "splitFrom": null,
   "plainTitle": "Who sends invoices",
   "rewordedFrom": null,
   "rewordedAgain": null,
   "whyOnlyOmar": "Whether the app may send an invoice itself changes who sends; today the owner sends every one and the no-send rule keeps it that way until his word.",
   "whyOnlyOmarSources": [
    "RULE #1 (AGENTS.md, standing since Omar 2026-09-10 19:17 UTC): nothing sends, publishes or contacts anyone without Omar's explicit OK",
    "Omar 2026-10-10 16:40 UTC — vault/topics/decisions/the money reports live in the app.md: \"Nothing sends. The owner sends invoices, not this hive\"",
    "canonical accounting v2.4, generated 2026-10-31 (materials/canonical/2026-10-31_canonical-tasks.v2.4.json): the rows under this question read waiting on Omar or on both"
   ],
   "supersededBy": null,
   "appliedAnswers": [],
   "decision": "Whether the app ever sends an invoice itself after the owner's OK, or the owner sends every one himself.",
   "prerequisites": [
    "The owner's QuickBooks login, so invoices draw on real customers and jobs.",
    "The owner's OK on each send until he says otherwise."
   ],
   "artifact": null,
   "sources": [
    "main's BUILDER CONTINUATION of 2026-11-08 carrying Codex's independent live re-review of the same date under Omar's standing authority, relayed by main (hive/EXECUTION_LOG.md): the question's CURRENT sentence must agree with what the build does and must ask exactly one thing. tasks-correction-2 v2.0.0, 2026-11-08."
   ],
   "proposal": null,
   "freedPart": null,
   "sendScope": null,
   "outcome": "Open: 2 rows wait on this one answer; nothing moves on them until Omar gives it.",
   "next": "Pick a choice or type an answer and save it; it stays on this device until you copy all answers into the line.",
   "questionShown": "Invoicing — may the app send invoices itself, or does the owner keep sending every one?",
   "whyShown": "Today the Collector drafts every invoice and the owner sends it himself. The drafting is built and running and is not held by this answer — drafting continues either way; only whether the app itself ever sends one is asked here.",
   "unlocks": "Your answer moves 2 rows: Offer conversational invoicing; Remove owner mediated invoicing handoffs.",
   "unlocksShown": "Your answer moves 2 rows: Offer conversational invoicing; Remove owner mediated invoicing handoffs."
  },
  {
   "n": 23,
   "key": "adoption",
   "ids": [
    "V02·codex"
   ],
   "question": "Field adoption — may the app record how each man uses it, so the office can see what gets used?",
   "why": "Recording use means recording something about each man, and the familiar workflow stays as it is either way. Who may see it: the owner and his managers, nobody else. Whether it identifies him: the record is per man, by name, so he can be asked about it. How long it is kept: 90 days, then deleted.",
   "choices": [
    {
     "value": "yes",
     "label": "Yes, record use"
    },
    {
     "value": "no",
     "label": "No"
    },
    {
     "value": "later",
     "label": "Later"
    }
   ],
   "cards": [
    "mgmt-ux"
   ],
   "covers": [
    {
     "id": "V02·codex",
     "title": "Make field adoption measurable",
     "state": "blocked",
     "waitingOn": "Omar",
     "card": "mgmt-ux",
     "status5": "needs-omar"
    }
   ],
   "fallback": false,
   "rq": false,
   "openBecause": "Measuring how the crew uses the app records something about each man; that needs your OK, and the workflow question is a yes or a no.",
   "decisionTrace": "canonical rows waiting on Omar (v2.4, 2026-10-31); no decision page names adoption measurement",
   "splitFrom": null,
   "plainTitle": "Recording how the crew uses the app",
   "rewordedFrom": {
    "n": 25,
    "question": "Field adoption — may the app measure how the crew uses it, and does the familiar workflow stay as it is?",
    "source": "Omar 2026-11-07 17:06 UTC Telegram 2174 (one decision per question, plain words, the recorded authorizations applied); main BUILDER ORDER 2026-11-07T17:40Z (hive/EXECUTION_LOG.md)"
   },
   "rewordedAgain": null,
   "whyOnlyOmar": "Recording how each man uses the app records something about each man; that is a rule about the crew's data and no dated word on this line gives it.",
   "whyOnlyOmarSources": [
    "canonical accounting v2.4, generated 2026-10-31 (materials/canonical/2026-10-31_canonical-tasks.v2.4.json): the rows under this question read waiting on Omar or on both",
    "vault/topics/decisions/ (every page read 2026-11-07): no page names adoption measurement"
   ],
   "supersededBy": null,
   "appliedAnswers": [],
   "decision": "Exactly what the app may record about how each man uses it: which screens he opens and how many times per week, and nothing else.",
   "prerequisites": [],
   "artifact": null,
   "sources": [
    "main's BUILDER CONTINUATION of 2026-11-08 carrying Codex's independent live re-review of the same date under Omar's standing authority, relayed by main (hive/EXECUTION_LOG.md): the question's CURRENT sentence must agree with what the build does and must ask exactly one thing. tasks-correction-2 v2.0.0, 2026-11-08."
   ],
   "proposal": null,
   "freedPart": null,
   "sendScope": null,
   "outcome": "Open: 1 row waits on this one answer; nothing moves on it until Omar gives it.",
   "next": "Pick a choice or type an answer and save it; it stays on this device until you copy all answers into the line.",
   "questionShown": "Field adoption — may the app record how each man uses it, so the office can see what gets used?",
   "whyShown": "Recording use means recording something about each man, and the familiar workflow stays as it is either way. Who may see it: the owner and his managers, nobody else. Whether it identifies him: the record is per man, by name, so he can be asked about it. How long it is kept: 90 days, then deleted.",
   "unlocks": "Your answer moves 1 row: Make field adoption measurable.",
   "unlocksShown": "Your answer moves 1 row: Make field adoption measurable."
  },
  {
   "n": 24,
   "key": "certs",
   "ids": [
    "GL-107",
    "V88"
   ],
   "question": "When a man without the right certificate is refused a job, does the office hear about it?",
   "why": "Today the app refuses the add outright and names every missing ticket. The warning is not built and nothing is emailed — the office line is a demo note written on screen. Two different emails could be wanted: one about a blocked attempt, and one about an override somebody explicitly proposes. Your rule settles which, if either; the refusal itself stays as it is.",
   "choices": [
    {
     "value": "keep",
     "label": "Keep the refusal as it is — the office hears nothing"
    },
    {
     "value": "blocked",
     "label": "Keep the refusal, and tell the office about the blocked attempt"
    },
    {
     "value": "override",
     "label": "Keep the refusal, and tell the office only when an override is explicitly proposed"
    },
    {
     "value": "later",
     "label": "Later"
    }
   ],
   "cards": [
    "safe-lib"
   ],
   "covers": [
    {
     "id": "GL-107",
     "title": "Emailing the office about a refused add, or an explicitly proposed override",
     "state": "blocked",
     "waitingOn": "Omar",
     "card": "office-msg",
     "status5": "needs-omar"
    },
    {
     "id": "V88",
     "title": "A man without the right certs: the add is refused, and the office is told",
     "state": "partial",
     "waitingOn": "Both",
     "card": "safe-lib",
     "status5": "needs-both"
    }
   ],
   "fallback": false,
   "rq": false,
   "openBecause": "A message to the office is a send, held by the no-send rule until you set the rule; what the app does today is a refusal, not a warning, and the warning is not built.",
   "decisionTrace": "V88 — RULE #1 (sending); canonical row waiting on Omar (v2.4, 2026-10-31)",
   "splitFrom": null,
   "plainTitle": "Certificate warnings",
   "rewordedFrom": {
    "n": 27,
    "question": "A man added to a job without the right certs — warn the supervisor, and email the office if he is added anyway?",
    "source": "Omar 2026-11-07 17:06 UTC Telegram 2174 (one decision per question, plain words, the recorded authorizations applied); main BUILDER ORDER 2026-11-07T17:40Z (hive/EXECUTION_LOG.md)"
   },
   "rewordedAgain": null,
   "whyOnlyOmar": "The warning is built; emailing the office is a send, and the no-send rule holds it until he sets the rule.",
   "whyOnlyOmarSources": [
    "RULE #1 (AGENTS.md, standing since Omar 2026-09-10 19:17 UTC): nothing sends, publishes or contacts anyone without Omar's explicit OK",
    "canonical accounting v2.4, generated 2026-10-31 (materials/canonical/2026-10-31_canonical-tasks.v2.4.json): the rows under this question read waiting on Omar or on both"
   ],
   "supersededBy": null,
   "appliedAnswers": [],
   "decision": "Whether the refusal stays as it is, and whether the office is emailed — about a blocked attempt, about an explicitly proposed override, or not at all; the wording is OK'd before anything goes out.",
   "prerequisites": [
    "The crew list with real tickets and expiry dates (the owner's own row on this page).",
    "The office address the alert goes to, if an email is wanted."
   ],
   "artifact": null,
   "sources": [
    "profile/Master_List_2026-09-16.md (the certificate row): \"ours blocks instead of warning, which is stronger; the office email is written on screen as a demo note and nothing is sent\" — read 2026-11-08; the warning this question asks about is not built, and the row under it says so",
    "main's BUILDER CONTINUATION of 2026-11-08 carrying Codex's independent live re-review of the same date under Omar's standing authority, relayed by main (hive/EXECUTION_LOG.md): the question's CURRENT sentence must agree with what the build does and must ask exactly one thing. tasks-correction-2 v2.0.0, 2026-11-08."
   ],
   "proposal": null,
   "freedPart": null,
   "sendScope": null,
   "outcome": "Open: 2 rows wait on this one answer; nothing moves on them until Omar gives it.",
   "next": "Pick a choice or type an answer and save it; it stays on this device until you copy all answers into the line.",
   "questionShown": "When a man without the right certificate is refused a job, does the office hear about it?",
   "whyShown": "Today the app refuses the add outright and names every missing ticket. The warning is not built and nothing is emailed — the office line is a demo note written on screen. Two different emails could be wanted: one about a blocked attempt, and one about an override somebody explicitly proposes. Your rule settles which, if either; the refusal itself stays as it is.",
   "unlocks": "Your answer moves 2 rows: Emailing the office about a refused add, or an explicitly proposed…; A man without the right certs: the add is refused, and the office is….",
   "unlocksShown": "Your answer moves 2 rows: Emailing the office about a refused add, or an explicitly proposed…; A man without the right certs: the add is refused, and the office is…."
  },
  {
   "n": 25,
   "key": "disciplinary",
   "ids": [
    "M-DISC"
   ],
   "question": "Restricted disciplinary records — who may open them?",
   "why": "The records sit on the man's page; the rule on who sees them is yours and the owner's.",
   "choices": [
    {
     "value": "owner",
     "label": "The owner only"
    },
    {
     "value": "managers",
     "label": "The owner and managers"
    },
    {
     "value": "ask",
     "label": "Ask the owner"
    }
   ],
   "cards": [
    "safe-people"
   ],
   "covers": [
    {
     "id": "M-DISC",
     "title": "Restricted disciplinary records",
     "state": "blocked",
     "waitingOn": "Omar",
     "card": "safe-people",
     "status5": "needs-omar"
    }
   ],
   "fallback": false,
   "rq": false,
   "openBecause": "Who may open restricted disciplinary records is a rule for you and the owner.",
   "decisionTrace": "M-DISC — canonical row waiting on Omar (v2.4, 2026-10-31)",
   "splitFrom": null,
   "plainTitle": "Who may open disciplinary records",
   "rewordedFrom": null,
   "rewordedAgain": null,
   "whyOnlyOmar": "Who may open restricted disciplinary records is an access rule for the company, his and the owner's to set; the rails keep owner-only records closed until a rule says otherwise.",
   "whyOnlyOmarSources": [
    "AGENTS.md rail 4 (2026-09-10): the owner's own figures and the owner-only records stay the owner's alone",
    "canonical accounting v2.4, generated 2026-10-31 (materials/canonical/2026-10-31_canonical-tasks.v2.4.json): the rows under this question read waiting on Omar or on both"
   ],
   "supersededBy": null,
   "appliedAnswers": [],
   "decision": "Who may open the restricted disciplinary records: the owner alone, or the owner and his managers. This is a narrower set than the HR file and is decided separately.",
   "prerequisites": [
    "The owner's word on who his managers are (the Team & Access page lists the logins).",
    "The HR-records rule (the HR question above), so the two rules agree."
   ],
   "artifact": null,
   "sources": [],
   "proposal": null,
   "freedPart": null,
   "sendScope": null,
   "outcome": "Open: 1 row waits on this one answer; nothing moves on it until Omar gives it.",
   "next": "Pick a choice or type an answer and save it; it stays on this device until you copy all answers into the line.",
   "questionShown": "Restricted disciplinary records — who may open them?",
   "whyShown": "The records sit on the man's page; the rule on who sees them is yours and the owner's.",
   "unlocks": "Your answer moves 1 row: Restricted disciplinary records.",
   "unlocksShown": "Your answer moves 1 row: Restricted disciplinary records."
  },
  {
   "n": 26,
   "key": "customer-portal",
   "ids": [
    "O-CLIENT"
   ],
   "question": "A customer self-service portal — in or out?",
   "why": "Optional. It is a second product and would come after the crew's app.",
   "choices": [
    {
     "value": "in",
     "label": "In, later"
    },
    {
     "value": "out",
     "label": "Out"
    }
   ],
   "cards": [
    "sales-crm"
   ],
   "covers": [
    {
     "id": "O-CLIENT",
     "title": "Optional customer self-service portal",
     "state": "blocked",
     "waitingOn": "Omar",
     "card": "sales-crm",
     "status5": "needs-omar"
    }
   ],
   "fallback": false,
   "rq": false,
   "openBecause": "A customer self-service portal is a second product; in or out is a scope decision only you make.",
   "decisionTrace": "O-CLIENT — canonical row waiting on Omar (v2.4, 2026-10-31)",
   "splitFrom": null,
   "plainTitle": "A customer portal",
   "rewordedFrom": null,
   "rewordedAgain": null,
   "whyOnlyOmar": "A customer self-service portal is a second product; in or out is a scope decision only he makes.",
   "whyOnlyOmarSources": [
    "canonical accounting v2.4, generated 2026-10-31 (materials/canonical/2026-10-31_canonical-tasks.v2.4.json): the rows under this question read waiting on Omar or on both",
    "Omar 2026-10-06 — vault/topics/people/Omar.md: \"No new scope\" without his word (2026-10-07 00:30 UTC)"
   ],
   "supersededBy": null,
   "appliedAnswers": [],
   "decision": "Whether a customer self-service portal is in scope at all, or stays out until the crew's app is finished.",
   "prerequisites": [],
   "artifact": null,
   "sources": [
    "main's BUILDER CONTINUATION of 2026-11-08 carrying Codex's independent live re-review of the same date under Omar's standing authority, relayed by main (hive/EXECUTION_LOG.md): the question's CURRENT sentence must agree with what the build does and must ask exactly one thing. tasks-correction-2 v2.0.0, 2026-11-08."
   ],
   "proposal": null,
   "freedPart": null,
   "sendScope": null,
   "outcome": "Open: 1 row waits on this one answer; nothing moves on it until Omar gives it.",
   "next": "Pick a choice or type an answer and save it; it stays on this device until you copy all answers into the line.",
   "questionShown": "A customer self-service portal — in or out?",
   "whyShown": "Optional. It is a second product and would come after the crew's app.",
   "unlocks": "Your answer moves 1 row: Optional customer self-service portal.",
   "unlocksShown": "Your answer moves 1 row: Optional customer self-service portal."
  }
 ],
 "questionArchive": [
  {
   "key": "reviews",
   "n": 4,
   "question": "Your open reviews — Forms, the Tickets pass, the Team page's demo email, the two silent jobs, the login slide — good, bad or change? And do we add the owner to this line?",
   "why": "Each item is built or decided and waits on your word alone: a yes, a no or a change. Adding the owner to the line needs his Telegram id and your go.",
   "cards": [
    "office-reviews"
   ],
   "ids": [
    "O4",
    "O-DECISIONS",
    "GL-065",
    "GL-069",
    "GL-070",
    "GL-071",
    "GL-073",
    "GL-074",
    "GL-075"
   ],
   "survivor": "review-forms",
   "survivors": [
    "review-forms",
    "review-tickets",
    "review-team-email",
    "review-silent-jobs",
    "review-login-slide",
    "review-librarian-quiet",
    "review-old-decisions",
    "review-owner-line"
   ],
   "reason": "split into eight questions, one decision each — the b1 question bundled nine ids and seven distinct decisions (Omar 2026-11-07 06:48Z Telegram 2118); every id now sits under exactly one of the eight",
   "decision": null,
   "decidedAt": "2026-11-07T06:48Z",
   "source": "Omar 2026-11-07 06:48Z Telegram 2118 (the three defects on the published tasks and tracker pages); main CHECKER ORDER 2026-11-07T06:52Z carrying Omar 06:48Z Telegram 2118 (hive/EXECUTION_LOG.md)",
   "archivedAt": "2026-11-07",
   "by": "The Builder (requirements-tasks-b2), on main's order carrying Omar 2026-11-07 06:48Z Telegram 2118"
  },
  {
   "key": "seats",
   "n": 5,
   "question": "Say yes to the nightly Collector and the Monday Ticket Keeper schedules, and to keeping the helpers' background jobs reliable?",
   "why": "Both helpers are built and already fire on schedule; neither sends anything. Your yes makes the schedules standing orders and lets us harden the jobs around them.",
   "cards": [
    "office-seats"
   ],
   "ids": [
    "O3",
    "O-JOBS"
   ],
   "survivor": null,
   "survivors": [],
   "reason": "decided before it was asked: the Collector (nightly) and Ticket Keeper (Monday) schedules are approved and both fire; a built, firing schedule is not an open choice — O3 routes by its own master-list status, O-JOBS by its canonical state",
   "decision": "seats",
   "decidedAt": "2026-10-03T00:31Z",
   "source": "Omar 2026-10-03 00:31 UTC \"2. Yes approve\" (vault/topics/people/Omar.md; GO_LIVE.md rows GL-054 and GL-055, crons set 00:32 UTC); main CHECKER ORDER 2026-11-07T06:52Z carrying Omar 06:48Z Telegram 2118 (hive/EXECUTION_LOG.md)",
   "archivedAt": "2026-11-07",
   "by": "The Builder (requirements-tasks-b2), on main's order carrying Omar 2026-11-07 06:48Z Telegram 2118"
  },
  {
   "key": "documents",
   "n": 12,
   "question": "Documents — build secure folders on records, drawing markup, protected approved versions and the closeout report, on demo data?",
   "why": "Document work, build time only; nothing from the owner is needed until real files arrive.",
   "cards": [
    "mgmt-docs"
   ],
   "ids": [
    "D06",
    "F52",
    "F53",
    "F56",
    "M-DOC",
    "M-DRAW"
   ],
   "survivor": null,
   "survivors": [],
   "reason": "decided before it was asked: build time only — authorised implementation; each row routes by its canonical state (Not done until the hive reports it finished)",
   "decision": "documents",
   "decidedAt": "2026-10-06T16:43Z",
   "source": "Omar 2026-10-06 16:43 UTC — vault/topics/decisions/implementation now, on your runtime.md (implementation against the requirement ids is authorised and does not come back for approval; demo fixes do not wait on hosting, auth or data decisions); re-stated by Omar 2026-11-07 06:48Z Telegram 2118",
   "archivedAt": "2026-11-07",
   "by": "The Builder (requirements-tasks-b2), on main's order carrying Omar 2026-11-07 06:48Z Telegram 2118"
  },
  {
   "key": "deck",
   "n": 22,
   "question": "The deck — finish the slide-by-slide pass from slide 6, and the two open slide notes: the price line against the no-price order, and the phone toolbar — leave or cut?",
   "why": "Nothing reaches the owner until the deck is done. Your pass from slide 6 on is the open half; the two notes are a word each.",
   "cards": [
    "pres-deck"
   ],
   "ids": [
    "O5",
    "GL-072"
   ],
   "survivor": null,
   "survivors": [],
   "reason": "decided before it was asked: the slide-by-slide pass and the two slide notes belong to the old deck, reference only since the redesign order; the no-price rule stands for the new deck; O5 routes by its own master-list status, GL-072 by its canonical state",
   "decision": "deck",
   "decidedAt": "2026-10-10",
   "source": "Omar 2026-10-10 — vault/topics/decisions/redesign the presentation from scratch.md; vault/topics/decisions/no dates and no price on the deck.md (2026-09-18); main CHECKER ORDER 2026-11-07T06:52Z carrying Omar 06:48Z Telegram 2118 (hive/EXECUTION_LOG.md)",
   "archivedAt": "2026-11-07",
   "by": "The Builder (requirements-tasks-b2), on main's order carrying Omar 2026-11-07 06:48Z Telegram 2118"
  },
  {
   "key": "attendance",
   "n": 24,
   "question": "A live who-is-on-site view — build it?",
   "why": "Build time only: current attendance read from Start Day.",
   "cards": [
    "crew-time"
   ],
   "ids": [
    "F02"
   ],
   "survivor": null,
   "survivors": [],
   "reason": "decided before it was asked: build time only — authorised implementation; routes by its canonical state",
   "decision": "attendance",
   "decidedAt": "2026-10-06T16:43Z",
   "source": "Omar 2026-10-06 16:43 UTC — vault/topics/decisions/implementation now, on your runtime.md (implementation against the requirement ids is authorised and does not come back for approval; demo fixes do not wait on hosting, auth or data decisions); re-stated by Omar 2026-11-07 06:48Z Telegram 2118",
   "archivedAt": "2026-11-07",
   "by": "The Builder (requirements-tasks-b2), on main's order carrying Omar 2026-11-07 06:48Z Telegram 2118"
  },
  {
   "key": "equipment",
   "n": 25,
   "question": "An equipment exceptions view — overdue inspections and missing gear on one screen — build it?",
   "why": "Build time only; the records it reads already exist in the app.",
   "cards": [
    "gear-assets"
   ],
   "ids": [
    "V14·codex"
   ],
   "survivor": null,
   "survivors": [],
   "reason": "decided before it was asked: build time only — authorised implementation; routes by its canonical state",
   "decision": "equipment",
   "decidedAt": "2026-10-06T16:43Z",
   "source": "Omar 2026-10-06 16:43 UTC — vault/topics/decisions/implementation now, on your runtime.md (implementation against the requirement ids is authorised and does not come back for approval; demo fixes do not wait on hosting, auth or data decisions); re-stated by Omar 2026-11-07 06:48Z Telegram 2118",
   "archivedAt": "2026-11-07",
   "by": "The Builder (requirements-tasks-b2), on main's order carrying Omar 2026-11-07 06:48Z Telegram 2118"
  },
  {
   "key": "dashboards",
   "n": 26,
   "question": "Active-project dashboards and the operational reports behind them — build them?",
   "why": "Build time only; the report set is defined.",
   "cards": [
    "mgmt-dash"
   ],
   "ids": [
    "M-DASH"
   ],
   "survivor": null,
   "survivors": [],
   "reason": "decided before it was asked: build time only — authorised implementation; routes by its canonical state",
   "decision": "dashboards",
   "decidedAt": "2026-10-06T16:43Z",
   "source": "Omar 2026-10-06 16:43 UTC — vault/topics/decisions/implementation now, on your runtime.md (implementation against the requirement ids is authorised and does not come back for approval; demo fixes do not wait on hosting, auth or data decisions); re-stated by Omar 2026-11-07 06:48Z Telegram 2118",
   "archivedAt": "2026-11-07",
   "by": "The Builder (requirements-tasks-b2), on main's order carrying Omar 2026-11-07 06:48Z Telegram 2118"
  },
  {
   "key": "publish",
   "n": 30,
   "question": "Publishing — do we put each clean build on the portal link as it passes, or wait for your word each time?",
   "why": "The portal link runs the latest build today. Every new build needs a 'publish'; a standing rule saves a round trip per batch.",
   "cards": [
    "plat-home"
   ],
   "ids": [
    "O1"
   ],
   "survivor": null,
   "survivors": [],
   "reason": "decided before it was asked: gated publishing is a standing permission, not an open choice; O1 is complete on the live read",
   "decision": "publish",
   "decidedAt": "2026-09-21",
   "source": "vault/topics/decisions/publish it right away.md (2026-09-21); vault/topics/decisions/if it passed the checks it's good.md (2026-09-27); the standing conditional release, Omar 2026-11-07 06:07Z Telegram 2114; main CHECKER ORDER 2026-11-07T06:52Z carrying Omar 06:48Z Telegram 2118 (hive/EXECUTION_LOG.md)",
   "archivedAt": "2026-11-07",
   "by": "The Builder (requirements-tasks-b2), on main's order carrying Omar 2026-11-07 06:48Z Telegram 2118"
  },
  {
   "key": "review-owner-line",
   "n": 11,
   "question": "Do we add the owner to this line?",
   "why": "It needs his Telegram id and your go; you declined on 2026-10-03, and the row stays open until you close it.",
   "cards": [],
   "ids": [
    "O4",
    "GL-065"
   ],
   "survivor": null,
   "survivors": [],
   "reason": "decided before it was asked: Omar answered Ask 6 on 2026-10-03 with \"Forget that\" — The owner is not being added to this line; the question quoted that word and asked again, so it is archived and both rows route by their own state",
   "decision": "owner-line",
   "decidedAt": "2026-10-03T00:31Z",
   "source": "Omar 2026-10-03 00:31 UTC \"6. Forget that\" — Ask 6, the owner's Telegram id (vault/topics/people/Omar.md); main BUILDER ORDER 2026-11-07T17:40Z carrying Omar 17:06Z Telegram 2174 (hive/EXECUTION_LOG.md)",
   "archivedAt": "2026-11-07",
   "by": "The Builder (requirements-tasks-b3), on main's BUILDER ORDER 2026-11-07T17:40Z carrying Omar 17:06Z Telegram 2174"
  },
  {
   "key": "review-silent-jobs",
   "n": 7,
   "question": "The two jobs that said done and wrote nothing — re-run them or drop them?",
   "why": "Both are yours to re-run or drop; the repair itself needs no approval.",
   "cards": [],
   "ids": [
    "GL-073"
   ],
   "survivor": null,
   "survivors": [],
   "reason": "not a decision: re-running two jobs that said done and wrote nothing is an AI-executable repair (Omar 2026-10-06, a repair you can do is not a decision); the row is Not done, cited, and leaves Omar's queue",
   "decision": "silent-jobs",
   "decidedAt": "2026-10-06T18:02Z",
   "source": "Omar 2026-10-06 18:02 UTC — vault/topics/decisions/a repair you can do is not a decision.md; main BUILDER ORDER 2026-11-07T17:40Z carrying Omar 17:06Z Telegram 2174",
   "archivedAt": "2026-11-07",
   "by": "The Builder (requirements-tasks-b3), on main's BUILDER ORDER 2026-11-07T17:40Z carrying Omar 17:06Z Telegram 2174"
  },
  {
   "key": "review-old-decisions",
   "n": 10,
   "question": "The old planning decisions — which stand and which are closed, without hiding the work?",
   "why": "Each decided item leaves your queue with its date and source; the undecided ones stay listed here.",
   "cards": [],
   "ids": [
    "O-DECISIONS"
   ],
   "survivor": null,
   "survivors": [],
   "reason": "not a decision: resolving the old planning decisions is hive work — each recorded word is applied to its rows with its date and source and the undecided ones are listed as questions (Omar 2026-11-07 06:48Z ordered the reconciliation; a repair you can do is not a decision, 2026-10-06); the row is Not done, cited",
   "decision": "old-decisions",
   "decidedAt": "2026-11-07T06:48Z",
   "source": "Omar 2026-11-07 06:48 UTC Telegram 2118; vault/topics/decisions/a repair you can do is not a decision.md (2026-10-06); main BUILDER ORDER 2026-11-07T17:40Z carrying Omar 17:06Z Telegram 2174",
   "archivedAt": "2026-11-07",
   "by": "The Builder (requirements-tasks-b3), on main's BUILDER ORDER 2026-11-07T17:40Z carrying Omar 17:06Z Telegram 2174"
  },
  {
   "key": "costing",
   "n": 26,
   "question": "Job costing — build the bid-versus-actual page the competitor showed, for the owner's eyes only?",
   "why": "The figures on that page are the owner's alone and never leave his login; the build is demo data until the real books are in.",
   "cards": [
    "fin-cost"
   ],
   "ids": [
    "GL-043"
   ],
   "survivor": null,
   "survivors": [],
   "reason": "decided before it was asked: the bid-versus-actual page is demo implementation already authorised (Omar 2026-10-06, implementation now) and the money reports live inside the app (2026-10-10); the question asked permission for authorised work — the row is Not done, owner-only by rail 4, cited",
   "decision": "costing",
   "decidedAt": "2026-10-06T16:43Z",
   "source": "Omar 2026-10-06 16:43 UTC — vault/topics/decisions/implementation now, on your runtime.md; vault/topics/decisions/the money reports live in the app.md (2026-10-10); main BUILDER ORDER 2026-11-07T17:40Z carrying Omar 17:06Z Telegram 2174",
   "archivedAt": "2026-11-07",
   "by": "The Builder (requirements-tasks-b3), on main's BUILDER ORDER 2026-11-07T17:40Z carrying Omar 17:06Z Telegram 2174"
  },
  {
   "key": "evidence",
   "n": 30,
   "question": "How is AI work judged, and how far may a seat retry on its own before a person looks?",
   "why": "The Checker loop and its cap of five are the current answer; your word fixes it.",
   "cards": [
    "plat-evidence"
   ],
   "ids": [
    "O-QUALITY"
   ],
   "survivor": null,
   "survivors": [],
   "reason": "decided before it was asked: how AI work is judged and how far a seat may retry alone is the Checker loop with its cap of five rounds, approved 2026-09-22 (five rounds, hard; a FAIL goes back to the same worker); the question re-asked the cap — the row routes by its state, cited",
   "decision": "evidence",
   "decidedAt": "2026-09-22T01:27Z",
   "source": "vault/topics/decisions/the checker loop.md — approved 2026-09-22 01:27 UTC, five rounds, hard; vault/topics/decisions/accepted means ruled.md (2026-10-31); main BUILDER ORDER 2026-11-07T17:40Z carrying Omar 17:06Z Telegram 2174",
   "archivedAt": "2026-11-07",
   "by": "The Builder (requirements-tasks-b3), on main's BUILDER ORDER 2026-11-07T17:40Z carrying Omar 17:06Z Telegram 2174"
  },
  {
   "key": "company",
   "n": 18,
   "question": "HQ across branches — keep the demo branch roll-up, or close it again under the one-company rule?",
   "why": "The row waits on your word first and the hive builds after it: a place in the app for feedback and for what changed in each build. Nothing dated on this line names it.",
   "cards": [
    "office-company"
   ],
   "ids": [
    "M-FEED"
   ],
   "survivor": null,
   "survivors": [],
   "reason": "not a decision: the branch and company rows this question carried were decided on 2026-10-04 (one company only; build the six not built) and the remainder — feedback and release notes inside the app, on demo data — is build work the hive does without asking (Omar 2026-10-06, a repair you can do is not a decision); the row is Not done, cited, and leaves Omar's queue",
   "decision": "feedback",
   "decidedAt": "2026-10-06T18:02Z",
   "source": "Omar 2026-10-06 18:02 UTC — vault/topics/decisions/a repair you can do is not a decision.md; Omar 2026-10-04 04:49 UTC — vault/topics/decisions/one company only.md (Now-block); main BUILDER DELTA 2026-11-07T18:20Z carrying Omar 18:15Z Telegram 2186 (hive/EXECUTION_LOG.md); pin v2.1.0 (hive/checks/2026-11-07_requirements-tasks-b3.md, 2026-11-07)",
   "archivedAt": "2026-11-07",
   "by": "The Builder (requirements-tasks-b3, the review delta), on main BUILDER DELTA 2026-11-07T18:20Z carrying Omar 18:15Z Telegram 2186 (hive/EXECUTION_LOG.md); pin v2.1.0 (hive/checks/2026-11-07_requirements-tasks-b3.md, 2026-11-07)"
  },
  {
   "key": "RQ-01",
   "n": 31,
   "question": "Do you want the owner's name printed on the Home pages, or does the 2026-09-16 rule that rewrites it to 'the owner' stand?",
   "why": "Every Home page and the tasks and tracker data go through the scrub at write time, so the owner's queue word reads 'Needs the owner' on the page even though you wrote the name. Lifting that rule is your call, by name; until then the rule stands and the word on the page is 'the owner'.",
   "cards": [],
   "ids": [
    "RQ-01"
   ],
   "survivor": null,
   "survivors": [],
   "reason": "applied, not open: the 2026-09-16 rule — The owner's name does not appear on the home page — is an instruction Omar already gave; a registered question cannot re-open it, so it leaves the list as applied (Omar's live review 2026-11-07 22:13Z: the owner-name question is an instruction already given)",
   "decision": "rq-01-applied",
   "decidedAt": "2026-09-16T16:54Z",
   "source": "Omar 2026-09-16 16:54 UTC — vault/topics/decisions/no owner name on the home page.md; Omar's independent live review of the All Tasks page, 2026-11-07 22:13 UTC Telegram 2233, carried by main's Builder order 2026-11-07T23:10Z (hive/EXECUTION_LOG.md); pin v2.3.0 (hive/checks/2026-11-07_requirements-tasks-b3.md, 2026-11-07)",
   "archivedAt": "2026-11-07T23:45Z",
   "by": "The Builder (requirements-tasks-b3 v2.3.0, dashboard a765bef3)"
  },
  {
   "key": "RQ-02",
   "n": 32,
   "question": "Does the grouped project plan replace the go-live list, or do both stay — and does the go-live row about the Checker loop's untested cap stay open?",
   "why": "The go-live list is a reference now; the grouped plan carries the same work on cards. One word settles which list the hive plans from, and whether the untested-cap row stays open until the cap fires for real.",
   "cards": [],
   "ids": [
    "RQ-02"
   ],
   "survivor": null,
   "survivors": [],
   "reason": "applied, not open: Omar's 2026-11-07 19:28 UTC word — finish All Tasks first, organised by project — already settles it: the grouped plan organises the work beside the go-live list, which stays as the reference; the untested-cap row keeps its own canonical state (Omar's live review 2026-11-07 22:13Z: an instruction already given)",
   "decision": "rq-02-applied",
   "decidedAt": "2026-11-07T19:28Z",
   "source": "Omar 2026-11-07 19:28 UTC via main's CHECKER ORDER 19:3xZ (hive/EXECUTION_LOG.md); vault/current/go-live-list.md (2026-10-31); Omar's independent live review of the All Tasks page, 2026-11-07 22:13 UTC Telegram 2233, carried by main's Builder order 2026-11-07T23:10Z (hive/EXECUTION_LOG.md); pin v2.3.0 (hive/checks/2026-11-07_requirements-tasks-b3.md, 2026-11-07)",
   "archivedAt": "2026-11-07T23:45Z",
   "by": "The Builder (requirements-tasks-b3 v2.3.0, dashboard a765bef3)"
  },
  {
   "key": "privacy",
   "n": 19,
   "question": "GPS on clock-in and HR privacy — do we show where a man clocks in from, and who may open HR records?",
   "why": "The owner has not answered the GPS question; the HR and location rows need one rule on who sees what.",
   "cards": [
    "safe-privacy"
   ],
   "ids": [
    "D11",
    "V40·codex",
    "M-PRIV",
    "GL-019"
   ],
   "survivor": "privacy-location",
   "survivors": [
    "privacy-location",
    "privacy-hr"
   ],
   "reason": "split into two decisions — the location-collection choice (collect it or not, and who sees it) and the HR-record access choice (who may open the file) were one question; every id now sits under exactly one of the two (Omar's live review 2026-11-07 22:13Z, Telegram 2233: Q15 split)",
   "decision": null,
   "decidedAt": "2026-11-07T22:13Z",
   "source": "Omar's independent live review of the All Tasks page, 2026-11-07 22:13 UTC Telegram 2233, carried by main's Builder order 2026-11-07T23:10Z (hive/EXECUTION_LOG.md); pin v2.3.0 (hive/checks/2026-11-07_requirements-tasks-b3.md, 2026-11-07)",
   "archivedAt": "2026-11-07T23:45Z",
   "by": "The Builder (requirements-tasks-b3 v2.3.0, dashboard a765bef3)"
  }
 ],
 "excluded": [
  {
   "id": "V82",
   "whose": "build",
   "part": "walkthrough",
   "cat": "Setting up a job",
   "title": "Branches tied into an HQ dashboard",
   "status": "out",
   "ask": "Fieldflo showed",
   "askKind": "shown",
   "source": "@24:23",
   "lands": "",
   "note": "Omar closed it 2026-09-15: Makki Demolition only, one company",
   "needs": "",
   "link": "",
   "key": "V82",
   "status5": "not-done",
   "status5Via": "no canonical row; the master list says out",
   "status5Word": "Not done",
   "canonicalId": null,
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "necessity": "dropped",
   "necessityReason": "dropped on purpose — Omar closed it 2026-09-15: Makki Demolition only, one company",
   "necessitySource": "Omar 2026-09-15 (Makki Demolition only, one company — vault/topics/decisions/one company only.md); tracker status out = Master list 'Deliberately out' (profile/Master_List_2026-09-16.md, outbox/homebase_makki/tasks.json); the row's cancelled block in materials/canonical/2026-10-23_canonical-tasks.v2.3.json",
   "necessityWord": "Dropped",
   "archiveAction": "cancelled-excluded",
   "survivingId": null,
   "survivorTitle": "",
   "archiveReason": "cancelled-by-Omar-2026-09-15",
   "rulingSource": "Omar 2026-09-15 (Makki Demolition only, one company — vault/topics/decisions/one company only.md); tracker status out = Master list 'Deliberately out' (profile/Master_List_2026-09-16.md, outbox/homebase_makki/tasks.json); the row's cancelled block in materials/canonical/2026-10-23_canonical-tasks.v2.3.json",
   "survivorStatus5": null,
   "excludedBy": "the archive rule (the review delta, main 2026-11-07T18:20Z carrying Omar 18:15Z Telegram 2186): a merged, removed or cancelled-excluded row is history — in no count, queue or question"
  },
  {
   "id": "V123",
   "whose": "build",
   "part": "walkthrough",
   "cat": "Price & next steps",
   "title": "Priced in tiers, counted on supervisors, foremen and above — daily labour is not billed",
   "status": "na",
   "ask": "Fieldflo's model (≈$15,000/yr, under 15 users)",
   "askKind": "shown",
   "source": "@39:16, @39:36–@40:27",
   "lands": "",
   "note": "a commercial fact for the deck",
   "needs": "",
   "link": "",
   "key": "V123",
   "status5": "not-done",
   "status5Via": "no canonical row; the master list says na",
   "status5Word": "Not done",
   "canonicalId": null,
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "necessity": "dropped",
   "necessityReason": "not an app task — a commercial fact for the deck",
   "necessitySource": "Master list 2026-09-16 status na = 'Not an app task' (profile/Master_List_2026-09-16.md; outbox/homebase_makki/tasks.json); the row's cancelled.excluded block in materials/canonical/2026-10-23_canonical-tasks.v2.3.json; 2026-10-31 (Auditor, on the Chief of Staff's 00:30Z order carrying Omar 2026-10-30 / Telegram 1902)",
   "necessityWord": "Dropped",
   "archiveAction": "cancelled-excluded",
   "survivingId": null,
   "survivorTitle": "",
   "archiveReason": "not-an-app-task",
   "rulingSource": "Master list 2026-09-16 status na = 'Not an app task' (profile/Master_List_2026-09-16.md; outbox/homebase_makki/tasks.json); the row's cancelled.excluded block in materials/canonical/2026-10-23_canonical-tasks.v2.3.json; 2026-10-31 (Auditor, on the Chief of Staff's 00:30Z order carrying Omar 2026-10-30 / Telegram 1902)",
   "survivorStatus5": null,
   "excludedBy": "the archive rule (the review delta, main 2026-11-07T18:20Z carrying Omar 18:15Z Telegram 2186): a merged, removed or cancelled-excluded row is history — in no count, queue or question"
  },
  {
   "id": "V130",
   "whose": "build",
   "part": "walkthrough",
   "cat": "The owner's own asks",
   "title": "An orientation video for the program, to share with managers",
   "status": "open",
   "ask": "The owner asked — and Fieldflo had none to show him",
   "askKind": "asked",
   "source": "@32:09",
   "lands": "",
   "note": "nobody has offered him one since",
   "needs": "Waits on Omar: a screen recording with a voiceover",
   "link": "",
   "key": "V130",
   "mapVia": "alias, same title",
   "mapEvidence": "GL-076 lists V130 as its alias under this row's own title — canonical accounting v2.4 (materials/canonical/2026-10-31_canonical-tasks.v2.4.json, generated 2026-10-31)",
   "status5": "not-done",
   "status5Via": "canonical GL-076: state blocked, waiting on none",
   "status5Word": "Not done",
   "canonicalId": "GL-076",
   "canonicalState": "blocked",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "necessity": "needed-for-demo",
   "necessitySource": "plan v0.2 (materials/handoff/2026-10-31_0102_audit-v2.4/DRAFT_MAKKI_PROJECT_PLAN_2026-10-31_v0.2.md, generated 2026-10-31): card safe-train \"Training, training matrix, orientation and onboarding\" on finish line 1",
   "necessityVia": "the canonical row GL-076's tag (tracker.json, reconciled over all 566 live rows)",
   "necessityWord": "Needed for the demo",
   "archiveAction": "merged",
   "survivingId": "GL-076",
   "survivorTitle": "A short orientation video for managers — a walkthrough the owner can send his managers so they use the app without being taught one at a time; the owner asked Fieldflo f…",
   "archiveReason": "duplicate-of-GL-076",
   "rulingSource": "2026-10-31 (Auditor, on the Chief of Staff's 00:30Z order carrying Omar 2026-10-30 / Telegram 1902); rule R1 in materials/canonical/2026-10-23_dedupe-decisions.v2.3.md (rules R1–R6, OWNER; 2026-10-24); the walkthrough row in outbox/homebase_makki/tasks.json (tracker rows as built 2026-10-23, the v2.3 source A); the requirement in materials/accounting/accounting-data.json (accounting r6 statements, 2026-10-11) and GO_LIVE.md",
   "survivorStatus5": "not-done",
   "excludedBy": "the archive rule (the review delta, main 2026-11-07T18:20Z carrying Omar 18:15Z Telegram 2186): a merged, removed or cancelled-excluded row is history — in no count, queue or question"
  },
  {
   "id": "V134",
   "whose": "build",
   "part": "walkthrough",
   "cat": "The owner's own asks",
   "title": "Pitch it to the VP; budget is already approved",
   "status": "na",
   "ask": "The owner's next step",
   "askKind": "shown",
   "source": "@40:46, @42:35",
   "lands": "",
   "note": "a sales fact",
   "needs": "",
   "link": "",
   "key": "V134",
   "status5": "not-done",
   "status5Via": "no canonical row; the master list says na",
   "status5Word": "Not done",
   "canonicalId": null,
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "necessity": "dropped",
   "necessityReason": "not an app task — a sales fact",
   "necessitySource": "Master list 2026-09-16 status na = 'Not an app task' (profile/Master_List_2026-09-16.md; outbox/homebase_makki/tasks.json); the row's cancelled.excluded block in materials/canonical/2026-10-23_canonical-tasks.v2.3.json; 2026-10-31 (Auditor, on the Chief of Staff's 00:30Z order carrying Omar 2026-10-30 / Telegram 1902)",
   "necessityWord": "Dropped",
   "archiveAction": "cancelled-excluded",
   "survivingId": null,
   "survivorTitle": "",
   "archiveReason": "not-an-app-task",
   "rulingSource": "Master list 2026-09-16 status na = 'Not an app task' (profile/Master_List_2026-09-16.md; outbox/homebase_makki/tasks.json); the row's cancelled.excluded block in materials/canonical/2026-10-23_canonical-tasks.v2.3.json; 2026-10-31 (Auditor, on the Chief of Staff's 00:30Z order carrying Omar 2026-10-30 / Telegram 1902)",
   "survivorStatus5": null,
   "excludedBy": "the archive rule (the review delta, main 2026-11-07T18:20Z carrying Omar 18:15Z Telegram 2186): a merged, removed or cancelled-excluded row is history — in no count, queue or question"
  },
  {
   "id": "V135",
   "whose": "build",
   "part": "walkthrough",
   "cat": "The owner's own asks",
   "title": "A second full demo with the whole team",
   "status": "na",
   "ask": "Dan offered; nothing was booked",
   "askKind": "shown",
   "source": "@41:24, @42:47",
   "lands": "",
   "note": "",
   "needs": "",
   "link": "",
   "key": "V135",
   "status5": "not-done",
   "status5Via": "no canonical row; the master list says na",
   "status5Word": "Not done",
   "canonicalId": null,
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "necessity": "dropped",
   "necessityReason": "not an app task",
   "necessitySource": "Master list 2026-09-16 status na = 'Not an app task' (profile/Master_List_2026-09-16.md; outbox/homebase_makki/tasks.json); the row's cancelled.excluded block in materials/canonical/2026-10-23_canonical-tasks.v2.3.json; 2026-10-31 (Auditor, on the Chief of Staff's 00:30Z order carrying Omar 2026-10-30 / Telegram 1902)",
   "necessityWord": "Dropped",
   "archiveAction": "cancelled-excluded",
   "survivingId": null,
   "survivorTitle": "",
   "archiveReason": "not-an-app-task",
   "rulingSource": "Master list 2026-09-16 status na = 'Not an app task' (profile/Master_List_2026-09-16.md; outbox/homebase_makki/tasks.json); the row's cancelled.excluded block in materials/canonical/2026-10-23_canonical-tasks.v2.3.json; 2026-10-31 (Auditor, on the Chief of Staff's 00:30Z order carrying Omar 2026-10-30 / Telegram 1902)",
   "survivorStatus5": null,
   "excludedBy": "the archive rule (the review delta, main 2026-11-07T18:20Z carrying Omar 18:15Z Telegram 2186): a merged, removed or cancelled-excluded row is history — in no count, queue or question"
  },
  {
   "id": "V140",
   "whose": "build",
   "part": "walkthrough",
   "cat": "The owner's own asks",
   "title": "Makki's team meeting is on Friday — \"know Fridays, usually we have our team meetings\"",
   "status": "na",
   "ask": "The owner said it",
   "askKind": "asked",
   "source": "@42:49 (raw L488)",
   "lands": "",
   "note": "a fact about how the company runs; the natural weekly slot for the Ticket Keeper and any weekly rollup",
   "needs": "",
   "link": "",
   "key": "V140",
   "status5": "not-done",
   "status5Via": "no canonical row; the master list says na",
   "status5Word": "Not done",
   "canonicalId": null,
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "necessity": "dropped",
   "necessityReason": "not an app task — a fact about how the company runs; the natural weekly slot for the Ticket Keeper and any weekly rollup",
   "necessitySource": "Master list 2026-09-16 status na = 'Not an app task' (profile/Master_List_2026-09-16.md; outbox/homebase_makki/tasks.json); the row's cancelled.excluded block in materials/canonical/2026-10-23_canonical-tasks.v2.3.json; 2026-10-31 (Auditor, on the Chief of Staff's 00:30Z order carrying Omar 2026-10-30 / Telegram 1902)",
   "necessityWord": "Dropped",
   "archiveAction": "cancelled-excluded",
   "survivingId": null,
   "survivorTitle": "",
   "archiveReason": "not-an-app-task",
   "rulingSource": "Master list 2026-09-16 status na = 'Not an app task' (profile/Master_List_2026-09-16.md; outbox/homebase_makki/tasks.json); the row's cancelled.excluded block in materials/canonical/2026-10-23_canonical-tasks.v2.3.json; 2026-10-31 (Auditor, on the Chief of Staff's 00:30Z order carrying Omar 2026-10-30 / Telegram 1902)",
   "survivorStatus5": null,
   "excludedBy": "the archive rule (the review delta, main 2026-11-07T18:20Z carrying Omar 18:15Z Telegram 2186): a merged, removed or cancelled-excluded row is history — in no count, queue or question"
  },
  {
   "id": "V141",
   "whose": "build",
   "part": "walkthrough",
   "cat": "The owner's own asks",
   "title": "Fieldflo cold-called Makki — \"when you guys contacted us, I figured, hey, we might as well give you guys a shot\"",
   "status": "na",
   "ask": "The owner said it",
   "askKind": "asked",
   "source": "@2:01 (raw L32)",
   "lands": "",
   "note": "a sales fact: the competitor got in front of the owner by outbound, and he took the call",
   "needs": "",
   "link": "",
   "key": "V141",
   "status5": "not-done",
   "status5Via": "no canonical row; the master list says na",
   "status5Word": "Not done",
   "canonicalId": null,
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "necessity": "dropped",
   "necessityReason": "not an app task — a sales fact: the competitor got in front of the owner by outbound, and he took the call",
   "necessitySource": "Master list 2026-09-16 status na = 'Not an app task' (profile/Master_List_2026-09-16.md; outbox/homebase_makki/tasks.json); the row's cancelled.excluded block in materials/canonical/2026-10-23_canonical-tasks.v2.3.json; 2026-10-31 (Auditor, on the Chief of Staff's 00:30Z order carrying Omar 2026-10-30 / Telegram 1902)",
   "necessityWord": "Dropped",
   "archiveAction": "cancelled-excluded",
   "survivingId": null,
   "survivorTitle": "",
   "archiveReason": "not-an-app-task",
   "rulingSource": "Master list 2026-09-16 status na = 'Not an app task' (profile/Master_List_2026-09-16.md; outbox/homebase_makki/tasks.json); the row's cancelled.excluded block in materials/canonical/2026-10-23_canonical-tasks.v2.3.json; 2026-10-31 (Auditor, on the Chief of Staff's 00:30Z order carrying Omar 2026-10-30 / Telegram 1902)",
   "survivorStatus5": null,
   "excludedBy": "the archive rule (the review delta, main 2026-11-07T18:20Z carrying Omar 18:15Z Telegram 2186): a merged, removed or cancelled-excluded row is history — in no count, queue or question"
  },
  {
   "whose": "omar",
   "part": "decision",
   "ask": "",
   "askKind": "shown",
   "lands": "",
   "needs": "",
   "link": "ali-textnumber",
   "id": "O2",
   "cat": "Omar: pushes & go-aheads",
   "title": "Say go on the texting number (about $10–20 a month)",
   "status": "open",
   "note": "Turns on labourers by text, the whole crew's schedule by text, and the owner running things by text.",
   "source": "Not built & why §2 · slide 15 row 1",
   "key": "O2",
   "mapVia": "alias, same title",
   "mapEvidence": "GL-067 lists O2 as its alias under this row's own title — canonical accounting v2.4 (materials/canonical/2026-10-31_canonical-tasks.v2.4.json, generated 2026-10-31)",
   "status5": "needs-omar",
   "status5Via": "one of Omar's own decisions",
   "status5Word": "Needs Omar",
   "canonicalId": "GL-067",
   "canonicalState": "blocked",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "necessity": "needed-for-launch",
   "necessitySource": "plan v0.2 (materials/handoff/2026-10-31_0102_audit-v2.4/DRAFT_MAKKI_PROJECT_PLAN_2026-10-31_v0.2.md, generated 2026-10-31): card office-textline \"The labourer text line (verify by text, no login)\" on finish line 2",
   "necessityVia": "the canonical row GL-067's tag (tracker.json, reconciled over all 566 live rows)",
   "necessityWord": "Needed for launch",
   "archiveAction": "merged",
   "survivingId": "GL-067",
   "survivorTitle": "Ask 8 — A texting line, the crew's numbers, and the wording — the only ask that costs money; unblocks labourers-by-text",
   "archiveReason": "duplicate-of-GL-067",
   "rulingSource": "2026-10-31 (Auditor, on the Chief of Staff's 00:30Z order carrying Omar 2026-10-30 / Telegram 1902); v1 §E precedent restated in materials/canonical/2026-10-23_dedupe-decisions.v2.3.md (rules R1–R6, OWNER; 2026-10-24); the ask row and its link key in outbox/homebase_makki/tasks.json (tracker rows as built 2026-10-23, the v2.3 source A); the GO_LIVE ask row in GO_LIVE.md (2026-10-04) and materials/accounting/accounting-data.json (accounting r6 statements, 2026-10-11)",
   "survivorStatus5": "needs-both",
   "excludedBy": "the archive rule (the review delta, main 2026-11-07T18:20Z carrying Omar 18:15Z Telegram 2186): a merged, removed or cancelled-excluded row is history — in no count, queue or question"
  },
  {
   "whose": "omar",
   "part": "decision",
   "ask": "",
   "askKind": "shown",
   "lands": "",
   "needs": "",
   "link": "",
   "id": "O3",
   "cat": "Omar: pushes & go-aheads",
   "title": "Say yes to the nightly Collector and the Monday Ticket Keeper schedules",
   "status": "open",
   "note": "Both helpers are built; the schedules wait on his word on this line.",
   "source": "BUILD_PLAN §3 rows 2 and 4",
   "key": "O3",
   "mapVia": "alias, same title",
   "mapEvidence": "GL-054 lists O3 as its alias under this row's own title — canonical accounting v2.4 (materials/canonical/2026-10-31_canonical-tasks.v2.4.json, generated 2026-10-31)",
   "decisionKey": "seats",
   "decidedAt": "2026-10-03T00:31Z",
   "decisionWords": "2. Yes approve",
   "decisionSource": "Omar 2026-10-03 00:31 UTC \"2. Yes approve\" (vault/topics/people/Omar.md; GO_LIVE.md rows GL-054 and GL-055, crons set 00:32 UTC); main CHECKER ORDER 2026-11-07T06:52Z carrying Omar 06:48Z Telegram 2118 (hive/EXECUTION_LOG.md)",
   "decisionEffect": "the Collector (nightly) and Ticket Keeper (Monday) schedules are approved and both fire; a built, firing schedule is not an open choice — O3 routes by its own master-list status, O-JOBS by its canonical state",
   "status5": "not-done",
   "status5Via": "decided 2026-10-03T00:31Z (\"2. Yes approve\") — routed by its own master-list status open, no longer in Omar's queue",
   "status5Word": "Not done",
   "canonicalId": "GL-054",
   "canonicalState": "complete",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "necessity": "needed-for-demo",
   "necessitySource": "plan v0.2 (materials/handoff/2026-10-31_0102_audit-v2.4/DRAFT_MAKKI_PROJECT_PLAN_2026-10-31_v0.2.md, generated 2026-10-31): card office-seats \"The helper agents and their schedules\" on finish line 1",
   "necessityVia": "the canonical row GL-054's tag (tracker.json, reconciled over all 566 live rows)",
   "necessityWord": "Needed for the demo",
   "archiveAction": "merged",
   "survivingId": "GL-054",
   "survivorTitle": "The Collector's nightly cron — approved by Omar 2026-10-03 00:31 UTC (\"2. Yes approve\"); set 00:32 UTC as job `2cc5e203`, `0 5 * * *` America/Edmonton, isola…",
   "archiveReason": "duplicate-of-GL-054",
   "rulingSource": "Omar 2026-10-03 00:31 UTC \"2. Yes approve\" — GO_LIVE.md lines 142–143 (GL-054, GL-055: crons set 00:32 UTC) and materials/accounting/accounting-data.json (accounting r6 statements, 2026-10-11); the ask row in outbox/homebase_makki/tasks.json (tracker rows as built 2026-10-23, the v2.3 source A); 2026-10-31 (Auditor, on the Chief of Staff's 00:30Z order carrying Omar 2026-10-30 / Telegram 1902)",
   "survivorStatus5": "completed",
   "excludedBy": "the archive rule (the review delta, main 2026-11-07T18:20Z carrying Omar 18:15Z Telegram 2186): a merged, removed or cancelled-excluded row is history — in no count, queue or question"
  },
  {
   "whose": "omar",
   "part": "decision",
   "ask": "",
   "askKind": "shown",
   "lands": "",
   "needs": "",
   "link": "",
   "id": "O5",
   "cat": "Omar: pushes & go-aheads",
   "title": "Finish the slide-by-slide pass (good / bad / change), from slide 6 on",
   "status": "part",
   "note": "Paused at slide 6 while the screen inventory and flow charts were built.",
   "source": "This line, 2026-09-16",
   "key": "O5",
   "decisionKey": "deck",
   "decidedAt": "2026-10-10",
   "decisionWords": "redesign the presentation from scratch — the old deck is reference only",
   "decisionSource": "Omar 2026-10-10 — vault/topics/decisions/redesign the presentation from scratch.md; vault/topics/decisions/no dates and no price on the deck.md (2026-09-18); main CHECKER ORDER 2026-11-07T06:52Z carrying Omar 06:48Z Telegram 2118 (hive/EXECUTION_LOG.md)",
   "decisionEffect": "the slide-by-slide pass and the two slide notes belong to the old deck, reference only since the redesign order; the no-price rule stands for the new deck; O5 routes by its own master-list status, GL-072 by its canonical state",
   "status5": "not-done",
   "status5Via": "decided 2026-10-10 (\"redesign the presentation from scratch — the old deck is reference only\") — routed by its own master-list status part, no longer in Omar's queue",
   "status5Word": "Not done",
   "canonicalId": null,
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "necessity": "dropped",
   "necessityReason": "removed in the tracker's archive: obsolete-superseded-by-2026-10-10-redesign-the-presentation-from-scratch",
   "necessitySource": "Omar 2026-10-10 — vault/topics/decisions/redesign the presentation from scratch.md; the same word recorded 2026-10-10 in hive/EXECUTION_LOG.md (two finish lines: 'The old deck is reference only — not a base to edit') and vault/STATUS.md; the row in outbox/homebase_makki/tasks.json (status part since 2026-09-16)",
   "necessityWord": "Dropped",
   "archiveAction": "removed",
   "survivingId": null,
   "survivorTitle": "",
   "archiveReason": "obsolete-superseded-by-2026-10-10-redesign-the-presentation-from-scratch",
   "rulingSource": "Omar 2026-10-10 — vault/topics/decisions/redesign the presentation from scratch.md; the same word recorded 2026-10-10 in hive/EXECUTION_LOG.md (two finish lines: 'The old deck is reference only — not a base to edit') and vault/STATUS.md; the row in outbox/homebase_makki/tasks.json (status part since 2026-09-16)",
   "survivorStatus5": null,
   "excludedBy": "the archive rule (the review delta, main 2026-11-07T18:20Z carrying Omar 18:15Z Telegram 2186): a merged, removed or cancelled-excluded row is history — in no count, queue or question"
  },
  {
   "whose": "omar",
   "part": "decision",
   "ask": "",
   "askKind": "shown",
   "lands": "",
   "needs": "",
   "link": "ali-hosting",
   "id": "O6",
   "cat": "Omar: pushes & go-aheads",
   "title": "Hosting: the owner's own Cloudflare account, or EazyLife's, and a Makki address",
   "status": "open",
   "note": "The owner's is the cleaner answer. A domain is $15–20 a year if Makki does not own one.",
   "source": "Solutions plan §8 · Not built & why §3 row 100",
   "key": "O6",
   "mapVia": "alias",
   "mapEvidence": "GL-053 lists O6 as its alias (\"Hosting: the owner's own Cloudflare account, or EazyLife's, and a Makki address\") — canonical accounting v2.4 (materials/canonical/2026-10-31_canonical-tasks.v2.4.json, generated 2026-10-31)",
   "status5": "needs-omar",
   "status5Via": "one of Omar's own decisions",
   "status5Word": "Needs Omar",
   "canonicalId": "GL-053",
   "canonicalState": "blocked",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "necessity": "needed-for-launch",
   "necessitySource": "plan v0.2 (materials/handoff/2026-10-31_0102_audit-v2.4/DRAFT_MAKKI_PROJECT_PLAN_2026-10-31_v0.2.md, generated 2026-10-31): card plat-host \"Hosting, domain, database, backups and capacity\" on finish line 2",
   "necessityVia": "the canonical row GL-053's tag (tracker.json, reconciled over all 566 live rows)",
   "necessityWord": "Needed for launch",
   "archiveAction": "merged",
   "survivingId": "GL-053",
   "survivorTitle": "A Makki address instead of a pages.dev link (app.makkiinc.ca or similar) — whose Cloudflare account holds Makki's app long-term, then a domain pointed at it;…",
   "archiveReason": "duplicate-of-GL-053",
   "rulingSource": "2026-10-31 (Auditor, on the Chief of Staff's 00:30Z order carrying Omar 2026-10-30 / Telegram 1902); v1 §E precedent restated in materials/canonical/2026-10-23_dedupe-decisions.v2.3.md (rules R1–R6, OWNER; 2026-10-24); the ask row and its link key in outbox/homebase_makki/tasks.json (tracker rows as built 2026-10-23, the v2.3 source A); the GO_LIVE ask row in GO_LIVE.md (2026-10-04) and materials/accounting/accounting-data.json (accounting r6 statements, 2026-10-11)",
   "survivorStatus5": "needs-both",
   "excludedBy": "the archive rule (the review delta, main 2026-11-07T18:20Z carrying Omar 18:15Z Telegram 2186): a merged, removed or cancelled-excluded row is history — in no count, queue or question"
  },
  {
   "whose": "omar",
   "part": "decision",
   "ask": "",
   "askKind": "shown",
   "lands": "",
   "needs": "",
   "link": "",
   "id": "O7",
   "cat": "Omar: pushes & go-aheads",
   "title": "An orientation video for managers: a screen recording with a voiceover",
   "status": "open",
   "note": "The owner asked for one on the call and Fieldflo had none. Cheapest item on the list.",
   "source": "Master list V130 · Not built & why §3 row 98",
   "key": "O7",
   "mapVia": "alias, same title",
   "mapEvidence": "GL-076 lists O7 as its alias under this row's own title — canonical accounting v2.4 (materials/canonical/2026-10-31_canonical-tasks.v2.4.json, generated 2026-10-31)",
   "status5": "needs-omar",
   "status5Via": "one of Omar's own decisions",
   "status5Word": "Needs Omar",
   "canonicalId": "GL-076",
   "canonicalState": "blocked",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "necessity": "needed-for-demo",
   "necessitySource": "plan v0.2 (materials/handoff/2026-10-31_0102_audit-v2.4/DRAFT_MAKKI_PROJECT_PLAN_2026-10-31_v0.2.md, generated 2026-10-31): card safe-train \"Training, training matrix, orientation and onboarding\" on finish line 1",
   "necessityVia": "the canonical row GL-076's tag (tracker.json, reconciled over all 566 live rows)",
   "necessityWord": "Needed for the demo",
   "archiveAction": "merged",
   "survivingId": "GL-076",
   "survivorTitle": "A short orientation video for managers — a walkthrough the owner can send his managers so they use the app without being taught one at a time; the owner asked Fieldflo f…",
   "archiveReason": "duplicate-of-GL-076",
   "rulingSource": "2026-10-31 (Auditor, on the Chief of Staff's 00:30Z order carrying Omar 2026-10-30 / Telegram 1902); v1 §E precedent restated in materials/canonical/2026-10-23_dedupe-decisions.v2.3.md (rules R1–R6, OWNER; 2026-10-24); the ask row and its link key in outbox/homebase_makki/tasks.json (tracker rows as built 2026-10-23, the v2.3 source A); the GO_LIVE ask row in GO_LIVE.md (2026-10-04) and materials/accounting/accounting-data.json (accounting r6 statements, 2026-10-11)",
   "survivorStatus5": "not-done",
   "excludedBy": "the archive rule (the review delta, main 2026-11-07T18:20Z carrying Omar 18:15Z Telegram 2186): a merged, removed or cancelled-excluded row is history — in no count, queue or question"
  },
  {
   "id": "The owner 3",
   "key": "ali-equipment",
   "whose": "owner",
   "part": "owner",
   "cat": "Owner: send us",
   "title": "Your equipment list",
   "status": "open",
   "ask": "",
   "askKind": "shown",
   "source": "Slide 15 row 8 · BUILD_PLAN §1",
   "lands": "",
   "note": "Turns on: Real Gear pages and QR tags on real machines.",
   "needs": "",
   "link": "",
   "mapVia": "alias, same title",
   "mapEvidence": "GL-068 lists The owner 3 as its alias under this row's own title — canonical accounting v2.4 (materials/canonical/2026-10-31_canonical-tasks.v2.4.json, generated 2026-10-31)",
   "status5": "needs-ali",
   "status5Via": "The owner's own task",
   "status5Word": "Needs Ali",
   "canonicalId": "GL-068",
   "canonicalState": "blocked",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "necessity": "needed-for-launch",
   "necessitySource": "plan v0.2 (materials/handoff/2026-10-31_0102_audit-v2.4/DRAFT_MAKKI_PROJECT_PLAN_2026-10-31_v0.2.md, generated 2026-10-31): card fin-cutover \"Data migration and the real-data cut-over\" on finish line 2",
   "necessityVia": "the canonical row GL-068's tag (tracker.json, reconciled over all 566 live rows)",
   "necessityWord": "Needed for launch",
   "archiveAction": "merged",
   "survivingId": "GL-068",
   "survivorTitle": "Ask 9 — Equipment list, photos, cost codes, a change-order form — what takes the app off demo data",
   "archiveReason": "duplicate-of-GL-068",
   "rulingSource": "2026-10-31 (Auditor, on the Chief of Staff's 00:30Z order carrying Omar 2026-10-30 / Telegram 1902); v1 §E precedent restated in materials/canonical/2026-10-23_dedupe-decisions.v2.3.md (rules R1–R6, OWNER; 2026-10-24); the ask row and its link key in outbox/homebase_makki/tasks.json (tracker rows as built 2026-10-23, the v2.3 source A); the GO_LIVE ask row in GO_LIVE.md (2026-10-04) and materials/accounting/accounting-data.json (accounting r6 statements, 2026-10-11)",
   "survivorStatus5": "needs-ali",
   "excludedBy": "the archive rule (the review delta, main 2026-11-07T18:20Z carrying Omar 18:15Z Telegram 2186): a merged, removed or cancelled-excluded row is history — in no count, queue or question"
  },
  {
   "id": "The owner 10",
   "key": "ali-textnumber",
   "whose": "owner",
   "part": "owner",
   "cat": "Owner: say yes or no",
   "title": "Yes to the texting number (about $10–20 a month)",
   "status": "open",
   "ask": "",
   "askKind": "shown",
   "source": "Slide 15 row 1",
   "lands": "",
   "note": "Turns on: Labourers who never log in: two texts a day instead of a login.",
   "needs": "",
   "link": "",
   "mapVia": "alias, same title",
   "mapEvidence": "GL-067 lists The owner 10 as its alias under this row's own title — canonical accounting v2.4 (materials/canonical/2026-10-31_canonical-tasks.v2.4.json, generated 2026-10-31)",
   "status5": "needs-ali",
   "status5Via": "The owner's own task",
   "status5Word": "Needs Ali",
   "canonicalId": "GL-067",
   "canonicalState": "blocked",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "necessity": "needed-for-launch",
   "necessitySource": "plan v0.2 (materials/handoff/2026-10-31_0102_audit-v2.4/DRAFT_MAKKI_PROJECT_PLAN_2026-10-31_v0.2.md, generated 2026-10-31): card office-textline \"The labourer text line (verify by text, no login)\" on finish line 2",
   "necessityVia": "the canonical row GL-067's tag (tracker.json, reconciled over all 566 live rows)",
   "necessityWord": "Needed for launch",
   "archiveAction": "merged",
   "survivingId": "GL-067",
   "survivorTitle": "Ask 8 — A texting line, the crew's numbers, and the wording — the only ask that costs money; unblocks labourers-by-text",
   "archiveReason": "duplicate-of-GL-067",
   "rulingSource": "2026-10-31 (Auditor, on the Chief of Staff's 00:30Z order carrying Omar 2026-10-30 / Telegram 1902); v1 §E precedent restated in materials/canonical/2026-10-23_dedupe-decisions.v2.3.md (rules R1–R6, OWNER; 2026-10-24); the ask row and its link key in outbox/homebase_makki/tasks.json (tracker rows as built 2026-10-23, the v2.3 source A); the GO_LIVE ask row in GO_LIVE.md (2026-10-04) and materials/accounting/accounting-data.json (accounting r6 statements, 2026-10-11)",
   "survivorStatus5": "needs-both",
   "excludedBy": "the archive rule (the review delta, main 2026-11-07T18:20Z carrying Omar 18:15Z Telegram 2186): a merged, removed or cancelled-excluded row is history — in no count, queue or question"
  },
  {
   "id": "The owner 11",
   "key": "ali-wordings",
   "whose": "owner",
   "part": "owner",
   "cat": "Owner: say yes or no",
   "title": "OK the two text wordings (morning, end of day)",
   "status": "open",
   "ask": "",
   "askKind": "shown",
   "source": "Slide 15 row 3 · Labourers by text plan",
   "lands": "",
   "note": "Turns on: Texting goes live as written.",
   "needs": "",
   "link": "",
   "mapVia": "alias, same title",
   "mapEvidence": "GL-067 lists The owner 11 as its alias under this row's own title — canonical accounting v2.4 (materials/canonical/2026-10-31_canonical-tasks.v2.4.json, generated 2026-10-31)",
   "status5": "needs-ali",
   "status5Via": "The owner's own task",
   "status5Word": "Needs Ali",
   "canonicalId": "GL-067",
   "canonicalState": "blocked",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "necessity": "needed-for-launch",
   "necessitySource": "plan v0.2 (materials/handoff/2026-10-31_0102_audit-v2.4/DRAFT_MAKKI_PROJECT_PLAN_2026-10-31_v0.2.md, generated 2026-10-31): card office-textline \"The labourer text line (verify by text, no login)\" on finish line 2",
   "necessityVia": "the canonical row GL-067's tag (tracker.json, reconciled over all 566 live rows)",
   "necessityWord": "Needed for launch",
   "archiveAction": "merged",
   "survivingId": "GL-067",
   "survivorTitle": "Ask 8 — A texting line, the crew's numbers, and the wording — the only ask that costs money; unblocks labourers-by-text",
   "archiveReason": "duplicate-of-GL-067",
   "rulingSource": "2026-10-31 (Auditor, on the Chief of Staff's 00:30Z order carrying Omar 2026-10-30 / Telegram 1902); v1 §E precedent restated in materials/canonical/2026-10-23_dedupe-decisions.v2.3.md (rules R1–R6, OWNER; 2026-10-24); the ask row and its link key in outbox/homebase_makki/tasks.json (tracker rows as built 2026-10-23, the v2.3 source A); the GO_LIVE ask row in GO_LIVE.md (2026-10-04) and materials/accounting/accounting-data.json (accounting r6 statements, 2026-10-11)",
   "survivorStatus5": "needs-both",
   "excludedBy": "the archive rule (the review delta, main 2026-11-07T18:20Z carrying Omar 18:15Z Telegram 2186): a merged, removed or cancelled-excluded row is history — in no count, queue or question"
  },
  {
   "id": "The owner 12",
   "key": "ali-hosting",
   "whose": "owner",
   "part": "owner",
   "cat": "Owner: say yes or no",
   "title": "Hosting: your Cloudflare account or EazyLife's, and a Makki address",
   "status": "open",
   "ask": "",
   "askKind": "shown",
   "source": "Slide 15 row 9 · Solutions plan §8",
   "lands": "",
   "note": "Turns on: Your app on your own account, at a Makki address instead of pages.dev.",
   "needs": "",
   "link": "",
   "mapVia": "alias, same title",
   "mapEvidence": "GL-053 lists The owner 12 as its alias under this row's own title — canonical accounting v2.4 (materials/canonical/2026-10-31_canonical-tasks.v2.4.json, generated 2026-10-31)",
   "status5": "needs-ali",
   "status5Via": "The owner's own task",
   "status5Word": "Needs Ali",
   "canonicalId": "GL-053",
   "canonicalState": "blocked",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "necessity": "needed-for-launch",
   "necessitySource": "plan v0.2 (materials/handoff/2026-10-31_0102_audit-v2.4/DRAFT_MAKKI_PROJECT_PLAN_2026-10-31_v0.2.md, generated 2026-10-31): card plat-host \"Hosting, domain, database, backups and capacity\" on finish line 2",
   "necessityVia": "the canonical row GL-053's tag (tracker.json, reconciled over all 566 live rows)",
   "necessityWord": "Needed for launch",
   "archiveAction": "merged",
   "survivingId": "GL-053",
   "survivorTitle": "A Makki address instead of a pages.dev link (app.makkiinc.ca or similar) — whose Cloudflare account holds Makki's app long-term, then a domain pointed at it;…",
   "archiveReason": "duplicate-of-GL-053",
   "rulingSource": "2026-10-31 (Auditor, on the Chief of Staff's 00:30Z order carrying Omar 2026-10-30 / Telegram 1902); v1 §E precedent restated in materials/canonical/2026-10-23_dedupe-decisions.v2.3.md (rules R1–R6, OWNER; 2026-10-24); the ask row and its link key in outbox/homebase_makki/tasks.json (tracker rows as built 2026-10-23, the v2.3 source A); the GO_LIVE ask row in GO_LIVE.md (2026-10-04) and materials/accounting/accounting-data.json (accounting r6 statements, 2026-10-11)",
   "survivorStatus5": "needs-both",
   "excludedBy": "the archive rule (the review delta, main 2026-11-07T18:20Z carrying Omar 18:15Z Telegram 2186): a merged, removed or cancelled-excluded row is history — in no count, queue or question"
  },
  {
   "id": "The owner 14",
   "key": "ali-gps",
   "whose": "owner",
   "part": "owner",
   "cat": "Owner: say yes or no",
   "title": "Do you want to see where each man clocks in from?",
   "status": "open",
   "ask": "",
   "askKind": "shown",
   "source": "Not built & why §3 row 15 · Master list V18",
   "lands": "",
   "note": "Turns on: GPS on clock-in, once texting exists.",
   "needs": "",
   "link": "",
   "mapVia": "alias, same title",
   "mapEvidence": "GL-019 lists The owner 14 as its alias under this row's own title — canonical accounting v2.4 (materials/canonical/2026-10-31_canonical-tasks.v2.4.json, generated 2026-10-31)",
   "status5": "needs-ali",
   "status5Via": "The owner's own task",
   "status5Word": "Needs Ali",
   "canonicalId": "GL-019",
   "canonicalState": "blocked",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "necessity": "needed-for-launch",
   "necessitySource": "plan v0.2 (materials/handoff/2026-10-31_0102_audit-v2.4/DRAFT_MAKKI_PROJECT_PLAN_2026-10-31_v0.2.md, generated 2026-10-31): card safe-privacy \"Location verification and HR privacy\" on finish line 2",
   "necessityVia": "the canonical row GL-019's tag (tracker.json, reconciled over all 566 live rows)",
   "necessityWord": "Needed for launch",
   "archiveAction": "merged",
   "survivingId": "GL-019",
   "survivorTitle": "GPS clock-in / photo clock-out (FlōTime) — location-verified start, photo-confirmed stop, buddy-punch prevention; and where each man clocked in from, includi…",
   "archiveReason": "duplicate-of-GL-019",
   "rulingSource": "2026-10-31 (Auditor, on the Chief of Staff's 00:30Z order carrying Omar 2026-10-30 / Telegram 1902); v1 §E precedent restated in materials/canonical/2026-10-23_dedupe-decisions.v2.3.md (rules R1–R6, OWNER; 2026-10-24); the ask row and its link key in outbox/homebase_makki/tasks.json (tracker rows as built 2026-10-23, the v2.3 source A); the GO_LIVE ask row in GO_LIVE.md (2026-10-04) and materials/accounting/accounting-data.json (accounting r6 statements, 2026-10-11)",
   "survivorStatus5": "needs-both",
   "excludedBy": "the archive rule (the review delta, main 2026-11-07T18:20Z carrying Omar 18:15Z Telegram 2186): a merged, removed or cancelled-excluded row is history — in no count, queue or question"
  },
  {
   "id": "The owner 15",
   "key": "ali-crm",
   "whose": "owner",
   "part": "owner",
   "cat": "Owner: say yes or no",
   "title": "Do you want a CRM: contacts, job walks, reach-outs?",
   "status": "open",
   "ask": "",
   "askKind": "shown",
   "source": "Not built & why §3 row 38 · Master list V27",
   "lands": "",
   "note": "Turns on: The CRM half Fieldflo pitched. You cut into that pitch to ask for QuickBooks instead.",
   "needs": "",
   "link": "",
   "mapVia": "alias, same title",
   "mapEvidence": "GL-033 lists The owner 15 as its alias under this row's own title — canonical accounting v2.4 (materials/canonical/2026-10-31_canonical-tasks.v2.4.json, generated 2026-10-31)",
   "status5": "needs-ali",
   "status5Via": "The owner's own task",
   "status5Word": "Needs Ali",
   "canonicalId": "GL-033",
   "canonicalState": "blocked",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "necessity": "needed-for-demo",
   "necessitySource": "plan v0.2 (materials/handoff/2026-10-31_0102_audit-v2.4/DRAFT_MAKKI_PROJECT_PLAN_2026-10-31_v0.2.md, generated 2026-10-31): card sales-crm \"CRM: contacts, follow-ups and estimator reporting\" on finish line 1",
   "necessityVia": "the canonical row GL-033's tag (tracker.json, reconciled over all 566 live rows)",
   "necessityWord": "Needed for the demo",
   "archiveAction": "merged",
   "survivingId": "GL-033",
   "survivorTitle": "CRM — contacts, prospect records, job walks, a reach-out log with reminders, proposal due-date alerts; the portal has a Pipeline and a Proposal printer, no c…",
   "archiveReason": "duplicate-of-GL-033",
   "rulingSource": "2026-10-31 (Auditor, on the Chief of Staff's 00:30Z order carrying Omar 2026-10-30 / Telegram 1902); v1 §E precedent restated in materials/canonical/2026-10-23_dedupe-decisions.v2.3.md (rules R1–R6, OWNER; 2026-10-24); the ask row and its link key in outbox/homebase_makki/tasks.json (tracker rows as built 2026-10-23, the v2.3 source A); the GO_LIVE ask row in GO_LIVE.md (2026-10-04) and materials/accounting/accounting-data.json (accounting r6 statements, 2026-10-11)",
   "survivorStatus5": "needs-ali",
   "excludedBy": "the archive rule (the review delta, main 2026-11-07T18:20Z carrying Omar 18:15Z Telegram 2186): a merged, removed or cancelled-excluded row is history — in no count, queue or question"
  },
  {
   "id": "The owner 16",
   "key": "ali-approvers",
   "whose": "owner",
   "part": "owner",
   "cat": "Owner: say yes or no",
   "title": "Who else signs off payroll, if anyone?",
   "status": "open",
   "ask": "",
   "askKind": "shown",
   "source": "Not built & why §3 row 52 · Master list V122",
   "lands": "",
   "note": "Turns on: An approval chain with a trail, instead of one approver.",
   "needs": "",
   "link": "",
   "mapVia": "alias, same title",
   "mapEvidence": "GL-040 lists The owner 16 as its alias under this row's own title — canonical accounting v2.4 (materials/canonical/2026-10-31_canonical-tasks.v2.4.json, generated 2026-10-31)",
   "status5": "needs-ali",
   "status5Via": "The owner's own task",
   "status5Word": "Needs Ali",
   "canonicalId": "GL-040",
   "canonicalState": "blocked",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "necessity": "needed-for-demo",
   "necessitySource": "plan v0.2 (materials/handoff/2026-10-31_0102_audit-v2.4/DRAFT_MAKKI_PROJECT_PLAN_2026-10-31_v0.2.md, generated 2026-10-31): card fin-payroll \"Payroll approval, allocation to jobs and export\" on finish line 1",
   "necessityVia": "the canonical row GL-040's tag (tracker.json, reconciled over all 566 live rows)",
   "necessityWord": "Needed for the demo",
   "archiveAction": "merged",
   "survivingId": "GL-040",
   "survivorTitle": "Payroll — a multi-approver sign-off chain with a trailing history (who besides the owner is allowed to approve payroll, and in what order); single approver is buil…",
   "archiveReason": "duplicate-of-GL-040",
   "rulingSource": "2026-10-31 (Auditor, on the Chief of Staff's 00:30Z order carrying Omar 2026-10-30 / Telegram 1902); v1 §E precedent restated in materials/canonical/2026-10-23_dedupe-decisions.v2.3.md (rules R1–R6, OWNER; 2026-10-24); the ask row and its link key in outbox/homebase_makki/tasks.json (tracker rows as built 2026-10-23, the v2.3 source A); the GO_LIVE ask row in GO_LIVE.md (2026-10-04) and materials/accounting/accounting-data.json (accounting r6 statements, 2026-10-11)",
   "survivorStatus5": "needs-ali",
   "excludedBy": "the archive rule (the review delta, main 2026-11-07T18:20Z carrying Omar 18:15Z Telegram 2186): a merged, removed or cancelled-excluded row is history — in no count, queue or question"
  },
  {
   "id": "The owner 18",
   "key": "ali-golive",
   "whose": "owner",
   "part": "owner",
   "cat": "Owner: pick a date",
   "title": "The day the demo data comes out",
   "status": "open",
   "ask": "",
   "askKind": "shown",
   "source": "Slide 15 row 10 · Solutions plan §7 step 6",
   "lands": "",
   "note": "Turns on: The DEMO header comes off. The app runs on your numbers.",
   "needs": "",
   "link": "",
   "mapVia": "alias, same title",
   "mapEvidence": "GL-045 lists The owner 18 as its alias under this row's own title — canonical accounting v2.4 (materials/canonical/2026-10-31_canonical-tasks.v2.4.json, generated 2026-10-31)",
   "status5": "needs-ali",
   "status5Via": "The owner's own task",
   "status5Word": "Needs Ali",
   "canonicalId": "GL-045",
   "canonicalState": "blocked",
   "accountingDate": "2026-10-31T00:54:18.780Z",
   "finalReview": "not yet reviewed",
   "finalReviewRef": null,
   "finalReviewVia": "no Checker ruling names this row",
   "necessity": "needed-for-launch",
   "necessitySource": "plan v0.2 (materials/handoff/2026-10-31_0102_audit-v2.4/DRAFT_MAKKI_PROJECT_PLAN_2026-10-31_v0.2.md, generated 2026-10-31): card plat-launch \"Pilot, cut-over and launch approval\" on finish line 2",
   "necessityVia": "the canonical row GL-045's tag (tracker.json, reconciled over all 566 live rows)",
   "necessityWord": "Needed for launch",
   "archiveAction": "merged",
   "survivingId": "GL-045",
   "survivorTitle": "The DEMO band comes off — the permanent band should stay until the owner picks the day",
   "archiveReason": "duplicate-of-GL-045",
   "rulingSource": "2026-10-31 (Auditor, on the Chief of Staff's 00:30Z order carrying Omar 2026-10-30 / Telegram 1902); v1 §E precedent restated in materials/canonical/2026-10-23_dedupe-decisions.v2.3.md (rules R1–R6, OWNER; 2026-10-24); the ask row and its link key in outbox/homebase_makki/tasks.json (tracker rows as built 2026-10-23, the v2.3 source A); the GO_LIVE ask row in GO_LIVE.md (2026-10-04) and materials/accounting/accounting-data.json (accounting r6 statements, 2026-10-11)",
   "survivorStatus5": "needs-ali",
   "excludedBy": "the archive rule (the review delta, main 2026-11-07T18:20Z carrying Omar 18:15Z Telegram 2186): a merged, removed or cancelled-excluded row is history — in no count, queue or question"
  }
 ],
 "coverage": {
  "rule": "requirements-tasks-b3, the review delta (item 4): a V row whose feature a later GL row built carries coveredBy — gl = the Completed GL row (completed means reported finished, Omar 2026-11-07 03:07Z), extent = how much of the V row's own scope that GL row covers (covered | partly | not), source = the dated completion-report line, uncovered = the part left in plain words. A covered V row reads the GL row's state (its canonical state is kept beside it as canonicalState); a partly row keeps its own state and names what is left. The GL row's grade file and accepted flag are copied as the final-review detail, never a condition. Nothing here invents a title or a state: every line is read from GO_LIVE.md, the master list or a grade file.",
  "source": "main BUILDER DELTA 2026-11-07T18:20Z carrying Omar 18:15Z Telegram 2186 (hive/EXECUTION_LOG.md); pin v2.1.0 (hive/checks/2026-11-07_requirements-tasks-b3.md, 2026-11-07)",
  "rows": [
   {
    "v": "V48",
    "gl": "GL-004",
    "extent": "covered",
    "source": "GO_LIVE.md row GL-004 (profile/Master_List_2026-09-16.md:477, V48; written 2026-09-26): Built — wave gl-wave1-people, criteria and run 2026-09-27 (hive/checks/2026-09-27_gl-wave1-people.md, criteria 29 and 54); state review in the canonical accounting v2.4 (2026-10-31)",
    "why": "the V row asks for a list of cert types that can be defined; GL-004 is the admin screen over the seeded types"
   },
   {
    "v": "V60",
    "gl": "GL-007",
    "extent": "covered",
    "source": "GO_LIVE.md row GL-007 (profile/Master_List_2026-09-16.md:482, V60) (written 2026-09-26, State re-printed 2026-10-04): Built — wave gl-wave2-forms, criteria and run 2026-09-27 (hive/checks/2026-09-27_gl-wave2-forms.md); state review in the canonical accounting v2.4 (2026-10-31)",
    "why": "the V row asks for building your own inspection question sets; GL-007 is the inspection-template builder"
   },
   {
    "v": "V23",
    "gl": "GL-007",
    "extent": "partly",
    "uncovered": "a library of ready-made inspections beyond the one asbestos checklist",
    "source": "GO_LIVE.md row GL-007 (V23's own-or-ready-made ask) (written 2026-09-26, State re-printed 2026-10-04): Built — wave gl-wave2-forms, criteria and run 2026-09-27 (hive/checks/2026-09-27_gl-wave2-forms.md); state review in the canonical accounting v2.4 (2026-10-31)",
    "why": "GL-007 builds the builder and one asbestos-specific checklist; the ready-made library the V row names is not in it"
   },
   {
    "v": "V74",
    "gl": "GL-002",
    "extent": "covered",
    "source": "GO_LIVE.md row GL-002 (profile/Master_List_2026-09-16.md:486, V74) (written 2026-09-26, State re-printed 2026-10-04): Built — wave gl-wave2-forms, criteria and run 2026-09-27 (hive/checks/2026-09-27_gl-wave2-forms.md); state review in the canonical accounting v2.4 (2026-10-31)",
    "why": "the V row asks for question templates per project; GL-002 adds the template builder the row's note said was missing"
   },
   {
    "v": "V86",
    "gl": "GL-001",
    "extent": "covered",
    "source": "GO_LIVE.md row GL-001 (profile/Not_Built_Why_2026-09-16.md:413; written 2026-09-26): Built — batch5-time-crew, graded 2026-10-10 (hive/checks/2026-10-10_batch5-time-crew.r2.grade.md); ruled \"holds\" 2026-10-25 (hive/checks/2026-10-25_workflows-b1.r1c.grade.md:22); state complete, accepted, in the canonical accounting v2.4 (2026-10-31)",
    "why": "the V row asks for the timesheet head start pulled from the schedule; GL-001 is that pull, graded and ruled"
   },
   {
    "v": "V35",
    "gl": "GL-015",
    "extent": "partly",
    "uncovered": "loading the owner's own people, customers and jobs — his spreadsheet or QuickBooks export",
    "source": "GO_LIVE.md row GL-015 (profile/Master_List_2026-09-16.md:498; written 2026-09-26): \"Built 2026-09-27 (gl-wave5-admin), live v30-admin 2026-10-03\" (hive/checks/2026-09-27_gl-wave5-admin.md); state review in the canonical accounting v2.4 (2026-10-31)",
    "why": "GL-015 builds the spreadsheet import; the V row as the owner asked it also needs his own data loaded, which waits on him"
   },
   {
    "v": "V139",
    "gl": "GL-013",
    "extent": "covered",
    "source": "GO_LIVE.md row GL-013 (profile/Master_List_2026-09-16.md; written 2026-09-26): \"Built 2026-09-27 (gl-wave5-admin), live v30-admin 2026-10-03\" (hive/checks/2026-09-27_gl-wave5-admin.md, criteria 13–22 and 28); state review in the canonical accounting v2.4 (2026-10-31)",
    "why": "the V row asks for ten project-manager seats; GL-013 is the project-manager role and the ten-seat roster"
   },
   {
    "v": "V55",
    "gl": "GL-012",
    "extent": "partly",
    "uncovered": "The owner's own equipment list to fill the page",
    "source": "GO_LIVE.md row GL-012 (profile/Master_List_2026-09-16.md:500, Add item) (written 2026-09-26, State re-printed 2026-10-04): Built — wave gl-wave2-forms, criteria and run 2026-09-27 (hive/checks/2026-09-27_gl-wave2-forms.md); state review in the canonical accounting v2.4 (2026-10-31)",
    "why": "GL-012 builds the add form for an asset and an inventory line; the V row as the owner asked it also waits on his equipment list"
   },
   {
    "v": "V57",
    "gl": "GL-006",
    "extent": "partly",
    "uncovered": "The owner's own safety data sheets to link to his chemicals",
    "source": "GO_LIVE.md row GL-006 (profile/Master_List_2026-09-16.md:481, V57) (written 2026-09-26, State re-printed 2026-10-04): Built — wave gl-wave2-forms, criteria and run 2026-09-27 (hive/checks/2026-09-27_gl-wave2-forms.md); state review in the canonical accounting v2.4 (2026-10-31)",
    "why": "GL-006 links a document to an asset and puts it on the scan page; the V row's own SDS documents are the owner's to send"
   },
   {
    "v": "H4",
    "gl": "H4",
    "extent": "partly",
    "uncovered": "the safety half — the OHS and asbestos paperwork tied to the right site — is not started",
    "source": "BUILD_PLAN.md §3 row 4 (The Ticket Keeper): \"Built; scheduled 2026-10-03, job e7259a56, Monday 5 a.m. Calgary. Safety half not started\"; no grade file names H4 in the canonical accounting v2.4 (2026-10-31)",
    "why": "the bundled Completed covers the ticket keeper — expiring tickets, who is un-bookable, hard-hat codes — and not the safety half"
   },
   {
    "v": "V69",
    "gl": "V69",
    "extent": "partly",
    "uncovered": "trainings are not covered, only tickets, and it refuses rather than warns",
    "source": "profile/Master_List_2026-09-16.md:337 (V69): \"Built — and ours refuses rather than warning. Trainings are not covered, only tickets\" (raw-transcript pass, 2026-09-16); no grade file names V69 in the canonical accounting v2.4 (2026-10-31)",
    "why": "the bundled Completed covers the mandatory-cert check on scheduling and the timesheet; trainings and a warning instead of a refusal are not in it"
   },
   {
    "v": "A4",
    "gl": "A4",
    "extent": "partly",
    "uncovered": "the bookkeeper, estimator and crew logins still get three fixed sample lines in the bell",
    "source": "profile/Master_List_2026-09-16.md:156 (A4): \"Built — rebuilt 2026-09-20 for the owner and the site lead … The bookkeeper, estimator and crew logins still get the three hard-coded mock lines\"; no grade file names A4 in the canonical accounting v2.4 (2026-10-31)",
    "why": "the bundled Completed covers the live bell for the owner and the site lead; the other three logins' bell is not in it"
   }
  ]
 },
 "ownerQueue": [
  "D07",
  "D12",
  "F04",
  "F10",
  "F12",
  "F16",
  "F42",
  "F43",
  "F48",
  "F57",
  "R12",
  "R14",
  "R16",
  "R17",
  "R18",
  "R19",
  "R21",
  "V03·codex",
  "V10·codex",
  "V17·codex",
  "V18·codex",
  "V31·codex",
  "V32·codex",
  "V33·codex",
  "V34·codex",
  "V37·codex",
  "V42·codex",
  "V45·codex",
  "V46·codex",
  "V52·codex",
  "V53·codex",
  "V55·codex",
  "W01",
  "W06",
  "W08",
  "W12",
  "W13",
  "W14",
  "W15",
  "M-BOOK",
  "M-BRAND",
  "M-CONT",
  "M-CRM",
  "M-DAY",
  "M-EST",
  "M-HR",
  "M-LANG",
  "M-MAT",
  "M-MIG",
  "M-OFF",
  "M-PAY",
  "M-QBO",
  "M-QUO",
  "M-REC",
  "M-SAFE",
  "M-SCH",
  "M-SIZE",
  "M-STA",
  "M-TIME",
  "O-WEB",
  "GL-010",
  "GL-011",
  "GL-017",
  "GL-018",
  "GL-025",
  "GL-026",
  "GL-033",
  "GL-040",
  "GL-045",
  "GL-046",
  "GL-047",
  "GL-048",
  "GL-049",
  "GL-050",
  "GL-051",
  "GL-052",
  "GL-056",
  "GL-057",
  "GL-058",
  "GL-060",
  "GL-061",
  "GL-062",
  "GL-063",
  "GL-064",
  "GL-066",
  "GL-068",
  "V18",
  "V25",
  "V27",
  "V32",
  "V33",
  "V35",
  "V40",
  "V44",
  "V45",
  "V47",
  "V55",
  "V57",
  "V58",
  "V61",
  "V62",
  "V63",
  "V64",
  "V65",
  "V67",
  "V78",
  "V80",
  "V93",
  "V95",
  "V96",
  "V100",
  "V104",
  "V106",
  "V107",
  "V110",
  "V112",
  "V113",
  "V122",
  "V128",
  "V131",
  "P11",
  "A53",
  "The owner 2",
  "The owner 5"
 ],
 "jointQueue": [
  "GL-019",
  "GL-020",
  "GL-053",
  "GL-067",
  "V4",
  "V7",
  "V31",
  "V88",
  "V91",
  "V98",
  "V109",
  "V114",
  "V116",
  "V136",
  "V137",
  "V138"
 ],
 "decisions": {
  "rule": "a dated decision on record resolves a row's owner field: the id never sits under an Omar question again, the row routes by its own state (an O-row by its master-list status) and cites the decision; the choice stays Omar's, already made",
  "list": [
   {
    "key": "seats",
    "ids": [
     "O3",
     "O-JOBS"
    ],
    "decidedAt": "2026-10-03T00:31Z",
    "by": "Omar",
    "words": "2. Yes approve",
    "effect": "the Collector (nightly) and Ticket Keeper (Monday) schedules are approved and both fire; a built, firing schedule is not an open choice — O3 routes by its own master-list status, O-JOBS by its canonical state",
    "source": "Omar 2026-10-03 00:31 UTC \"2. Yes approve\" (vault/topics/people/Omar.md; GO_LIVE.md rows GL-054 and GL-055, crons set 00:32 UTC); main CHECKER ORDER 2026-11-07T06:52Z carrying Omar 06:48Z Telegram 2118 (hive/EXECUTION_LOG.md)"
   },
   {
    "key": "documents",
    "ids": [
     "D06",
     "F52",
     "F53",
     "F56",
     "M-DOC",
     "M-DRAW"
    ],
    "decidedAt": "2026-10-06T16:43Z",
    "by": "Omar",
    "words": "Omar authorizes implementation now (6 Oct): proceed with the confirmed fixes and remaining agreed work from our reviews, on YOUR existing Makki runtime.",
    "effect": "build time only — authorised implementation; each row routes by its canonical state (Not done until the hive reports it finished)",
    "source": "Omar 2026-10-06 16:43 UTC — vault/topics/decisions/implementation now, on your runtime.md (implementation against the requirement ids is authorised and does not come back for approval; demo fixes do not wait on hosting, auth or data decisions); re-stated by Omar 2026-11-07 06:48Z Telegram 2118"
   },
   {
    "key": "deck",
    "ids": [
     "O5",
     "GL-072"
    ],
    "decidedAt": "2026-10-10",
    "by": "Omar",
    "words": "redesign the presentation from scratch — the old deck is reference only",
    "effect": "the slide-by-slide pass and the two slide notes belong to the old deck, reference only since the redesign order; the no-price rule stands for the new deck; O5 routes by its own master-list status, GL-072 by its canonical state",
    "source": "Omar 2026-10-10 — vault/topics/decisions/redesign the presentation from scratch.md; vault/topics/decisions/no dates and no price on the deck.md (2026-09-18); main CHECKER ORDER 2026-11-07T06:52Z carrying Omar 06:48Z Telegram 2118 (hive/EXECUTION_LOG.md)"
   },
   {
    "key": "attendance",
    "ids": [
     "F02"
    ],
    "decidedAt": "2026-10-06T16:43Z",
    "by": "Omar",
    "words": "implementation now, on your runtime",
    "effect": "build time only — authorised implementation; routes by its canonical state",
    "source": "Omar 2026-10-06 16:43 UTC — vault/topics/decisions/implementation now, on your runtime.md (implementation against the requirement ids is authorised and does not come back for approval; demo fixes do not wait on hosting, auth or data decisions); re-stated by Omar 2026-11-07 06:48Z Telegram 2118"
   },
   {
    "key": "equipment",
    "ids": [
     "V14·codex"
    ],
    "decidedAt": "2026-10-06T16:43Z",
    "by": "Omar",
    "words": "implementation now, on your runtime",
    "effect": "build time only — authorised implementation; routes by its canonical state",
    "source": "Omar 2026-10-06 16:43 UTC — vault/topics/decisions/implementation now, on your runtime.md (implementation against the requirement ids is authorised and does not come back for approval; demo fixes do not wait on hosting, auth or data decisions); re-stated by Omar 2026-11-07 06:48Z Telegram 2118"
   },
   {
    "key": "dashboards",
    "ids": [
     "M-DASH"
    ],
    "decidedAt": "2026-10-06T16:43Z",
    "by": "Omar",
    "words": "implementation now, on your runtime",
    "effect": "build time only — authorised implementation; routes by its canonical state",
    "source": "Omar 2026-10-06 16:43 UTC — vault/topics/decisions/implementation now, on your runtime.md (implementation against the requirement ids is authorised and does not come back for approval; demo fixes do not wait on hosting, auth or data decisions); re-stated by Omar 2026-11-07 06:48Z Telegram 2118"
   },
   {
    "key": "publish",
    "ids": [
     "O1"
    ],
    "decidedAt": "2026-09-21",
    "by": "Omar",
    "words": "publish it right away · if it passed the checks it's good",
    "effect": "gated publishing is a standing permission, not an open choice; O1 is complete on the live read",
    "source": "vault/topics/decisions/publish it right away.md (2026-09-21); vault/topics/decisions/if it passed the checks it's good.md (2026-09-27); the standing conditional release, Omar 2026-11-07 06:07Z Telegram 2114; main CHECKER ORDER 2026-11-07T06:52Z carrying Omar 06:48Z Telegram 2118 (hive/EXECUTION_LOG.md)"
   },
   {
    "key": "owner-line",
    "ids": [
     "O4",
     "GL-065"
    ],
    "decidedAt": "2026-10-03T00:31Z",
    "by": "Omar",
    "words": "6. Forget that",
    "effect": "The owner is not being added to this line; O4 routes by its own master-list status and GL-065 by its canonical state — neither waits on Omar or the owner any longer",
    "source": "Omar 2026-10-03 00:31 UTC \"6. Forget that\" — Ask 6, the owner's Telegram id (vault/topics/people/Omar.md); main BUILDER ORDER 2026-11-07T17:40Z carrying Omar 17:06Z Telegram 2174 (hive/EXECUTION_LOG.md)"
   },
   {
    "key": "company",
    "ids": [
     "GL-037",
     "V36·codex",
     "M-MULTI"
    ],
    "decidedAt": "2026-10-04T04:49Z",
    "by": "Omar",
    "words": "Okay the 6 not built can you build it",
    "effect": "the HQ-across-branches screen was built the same morning as an owner-only tab on demo branch labels (never a company name); one company stands everywhere else; a later dated word beats an earlier one, so the choice is not raised again — each row routes by its canonical state",
    "source": "Omar 2026-10-04 04:49 UTC — vault/topics/decisions/build the six not built.md; vault/topics/decisions/one company only.md (2026-09-15; Now-block 2026-10-04: answered twice over, do not raise it with him as an open question)"
   },
   {
    "key": "jha-build",
    "ids": [
     "V41·codex",
     "M-ACK"
    ],
    "decidedAt": "2026-10-06T16:43Z",
    "by": "Omar",
    "words": "Omar authorizes implementation now (6 Oct): proceed with the confirmed fixes and remaining agreed work from our reviews, on YOUR existing Makki runtime.",
    "effect": "daily JHA reuse with a fresh review and the crew / auditor acknowledgements are demo implementation against requirement ids, authorised; they never waited on the weather-feed choice — each routes by its canonical state (Not done until the hive reports it finished)",
    "source": "Omar 2026-10-06 16:43 UTC — vault/topics/decisions/implementation now, on your runtime.md (implementation against the requirement ids is authorised and does not come back for approval; demo fixes do not wait on hosting, auth or data decisions)"
   },
   {
    "key": "costing",
    "ids": [
     "GL-043"
    ],
    "decidedAt": "2026-10-06T16:43Z",
    "by": "Omar",
    "words": "Omar authorizes implementation now (6 Oct)",
    "effect": "the bid-versus-actual costing page is demo implementation, owner-only by rail 4, authorised; the 2026-10-10 word puts the money reports inside the app — the row routes by its canonical state (Not done until the hive reports it finished)",
    "source": "Omar 2026-10-06 16:43 UTC — vault/topics/decisions/implementation now, on your runtime.md; vault/topics/decisions/the money reports live in the app.md (2026-10-10)"
   },
   {
    "key": "silent-jobs",
    "ids": [
     "GL-073"
    ],
    "decidedAt": "2026-10-06T18:02Z",
    "by": "Omar",
    "words": "AI-executable repair, not an Omar/the owner decision: queue/fix it in the existing workflow and add a regression check",
    "effect": "two jobs that said done and wrote nothing is failed AI work; re-running them is an AI-executable repair, never an item on a human's list — the row routes by its canonical state (Not done until the hive reports it finished)",
    "source": "Omar 2026-10-06 18:02 UTC — vault/topics/decisions/a repair you can do is not a decision.md (restated 21:35 and 22:08 UTC the same day)"
   },
   {
    "key": "old-decisions",
    "ids": [
     "O-DECISIONS"
    ],
    "decidedAt": "2026-11-07T06:48Z",
    "by": "Omar",
    "words": "the already-decided ids leave the questions with their dated sources",
    "effect": "resolving the old planning decisions is hive work: every decision with a dated word on record is applied to its rows and cited there, and the ones without one are listed as questions — a repair the hive can do is not a human choice; the row routes by its canonical state (Not done until the hive reports it finished)",
    "source": "Omar 2026-11-07 06:48 UTC Telegram 2118 (the reconciliation of the decided ids); vault/topics/decisions/a repair you can do is not a decision.md (2026-10-06); main CHECKER ORDER 2026-11-07T06:52Z (hive/EXECUTION_LOG.md)"
   },
   {
    "key": "evidence",
    "ids": [
     "O-QUALITY"
    ],
    "decidedAt": "2026-09-22T01:27Z",
    "by": "Omar",
    "words": "1 yes, 2 yes",
    "effect": "how AI work is judged and how far a seat may retry on its own is the Checker loop with its cap of five rounds, approved: criteria as commands before the work, a FAIL goes back to the same worker, five rounds hard, the whole record to Omar after five; the row routes by its canonical state",
    "source": "vault/topics/decisions/the checker loop.md — approved 2026-09-22 01:27 UTC (\"1 yes, 2 yes\"): five rounds, hard; criteria before the work; a FAIL goes back to the same worker; vault/topics/decisions/accepted means ruled.md (2026-10-31)"
   },
   {
    "key": "feedback",
    "ids": [
     "M-FEED"
    ],
    "decidedAt": "2026-10-06T18:02Z",
    "by": "Omar",
    "words": "A repair you can do is not a decision — never relabel AI work as a human dependency",
    "effect": "a place in the app for feedback and for what changed in each build is demo build work the hive does on its own; the row routes by its canonical state (Not done until built) and leaves Omar's queue",
    "source": "Omar 2026-10-06 18:02 UTC (restated 21:35 and 22:08 UTC) — vault/topics/decisions/a repair you can do is not a decision.md; Omar 2026-10-06 16:43 UTC — vault/topics/decisions/implementation now, on your runtime.md; main BUILDER DELTA 2026-11-07T18:20Z carrying Omar 18:15Z Telegram 2186 (hive/EXECUTION_LOG.md); pin v2.1.0 (hive/checks/2026-11-07_requirements-tasks-b3.md, 2026-11-07)"
   },
   {
    "key": "rq-01-applied",
    "ids": [
     "RQ-01"
    ],
    "decidedAt": "2026-09-16T16:54Z",
    "by": "Omar",
    "words": "The owner's name does not appear on the home page",
    "effect": "the 2026-09-16 rule stands; the registered question asked for an instruction already given and leaves the open list as applied — the scrub keeps rewriting the owner's name on every page (the one exempt token is the status label, Omar 2026-11-07 22:19Z Telegram 2236)",
    "source": "Omar 2026-09-16 16:54 UTC — vault/topics/decisions/no owner name on the home page.md; Omar's independent live review of the All Tasks page, 2026-11-07 22:13 UTC Telegram 2233, carried by main's Builder order 2026-11-07T23:10Z (hive/EXECUTION_LOG.md); pin v2.3.0 (hive/checks/2026-11-07_requirements-tasks-b3.md, 2026-11-07)"
   },
   {
    "key": "rq-02-applied",
    "ids": [
     "RQ-02"
    ],
    "decidedAt": "2026-11-07T19:28Z",
    "by": "Omar",
    "words": "finish All Tasks first, organised by project",
    "effect": "both stay: the grouped project plan organises the work and the go-live list stays as the reference (vault/current/go-live-list.md, 2026-10-31); the registered question asked for an instruction already given and leaves the open list as applied; the untested-cap row keeps its own canonical state",
    "source": "Omar 2026-11-07 19:28 UTC (finish All Tasks first, organised by project) via main's CHECKER ORDER 19:3xZ (hive/EXECUTION_LOG.md); vault/current/go-live-list.md (2026-10-31); Omar's independent live review of the All Tasks page, 2026-11-07 22:13 UTC Telegram 2233, carried by main's Builder order 2026-11-07T23:10Z (hive/EXECUTION_LOG.md); pin v2.3.0 (hive/checks/2026-11-07_requirements-tasks-b3.md, 2026-11-07)"
   },
   {
    "key": "training-edges",
    "kind": "released",
    "ids": [
     "F32",
     "F33",
     "F55",
     "V20·codex",
     "V23·codex",
     "V48·codex",
     "V56·codex",
     "M-ONB",
     "M-TRAIN",
     "GL-024",
     "GL-076"
    ],
    "decidedAt": "2026-11-07T22:13Z",
    "by": "Omar",
    "words": "the dependency edges are wrong — only the rows that depend on the decision stay under the question (Omar's live review, as carried by main's order of 2026-11-07 23:10Z)",
    "effect": "released from the training question: only the two licensed-catalogue rows (the catalogue decision and the catalogue option) depend on the paid-catalogue decision; the training matrix, the onboarding and orientation material, the training library, history and reports and the custom training rows are build work that never depended on it; each released row routes by its canonical state (Not done, build work) and leaves Omar's queue; the rows that depend on the decision stay under the question",
    "source": "Omar's independent live review of the All Tasks page, 2026-11-07 22:13 UTC Telegram 2233, carried by main's Builder order 2026-11-07T23:10Z (hive/EXECUTION_LOG.md); pin v2.3.0 (hive/checks/2026-11-07_requirements-tasks-b3.md, 2026-11-07)"
   },
   {
    "key": "install-edges",
    "kind": "released",
    "ids": [
     "O-INSTALL",
     "O-UPDATE"
    ],
    "decidedAt": "2026-11-07T22:13Z",
    "by": "Omar",
    "words": "the dependency edges are wrong — only the rows that depend on the decision stay under the question (Omar's live review, as carried by main's order of 2026-11-07 23:10Z)",
    "effect": "released from the install question: only the optional public app-store listing depends on the paid-store decision; getting the app on phones and desktop and the safe-release / rollback work are build work that never depended on it; each released row routes by its canonical state (Not done, build work) and leaves Omar's queue; the rows that depend on the decision stay under the question",
    "source": "Omar's independent live review of the All Tasks page, 2026-11-07 22:13 UTC Telegram 2233, carried by main's Builder order 2026-11-07T23:10Z (hive/EXECUTION_LOG.md); pin v2.3.0 (hive/checks/2026-11-07_requirements-tasks-b3.md, 2026-11-07)"
   },
   {
    "key": "proposals-edges",
    "kind": "released",
    "ids": [
     "R03"
    ],
    "decidedAt": "2026-11-07T22:13Z",
    "by": "Omar",
    "words": "the dependency edges are wrong — only the rows that depend on the decision stay under the question (Omar's live review, as carried by main's order of 2026-11-07 23:10Z)",
    "effect": "released from the proposals question: only the e-signature send from the app depends on the send decision; turning an accepted quote into a job is build work that never depended on it; each released row routes by its canonical state (Not done, build work) and leaves Omar's queue; the rows that depend on the decision stay under the question",
    "source": "Omar's independent live review of the All Tasks page, 2026-11-07 22:13 UTC Telegram 2233, carried by main's Builder order 2026-11-07T23:10Z (hive/EXECUTION_LOG.md); pin v2.3.0 (hive/checks/2026-11-07_requirements-tasks-b3.md, 2026-11-07)"
   },
   {
    "key": "adoption-edges",
    "kind": "released",
    "ids": [
     "R22"
    ],
    "decidedAt": "2026-11-07T22:13Z",
    "by": "Omar",
    "words": "the dependency edges are wrong — only the rows that depend on the decision stay under the question (Omar's live review, as carried by main's order of 2026-11-07 23:10Z)",
    "effect": "released from the adoption question: only the field-adoption measurement row depends on the measurement decision; keeping the familiar workflow simple is build work that never depended on it; each released row routes by its canonical state (Not done, build work) and leaves Omar's queue; the rows that depend on the decision stay under the question",
    "source": "Omar's independent live review of the All Tasks page, 2026-11-07 22:13 UTC Telegram 2233, carried by main's Builder order 2026-11-07T23:10Z (hive/EXECUTION_LOG.md); pin v2.3.0 (hive/checks/2026-11-07_requirements-tasks-b3.md, 2026-11-07)"
   },
   {
    "key": "owner-line-ask",
    "ids": [
     "ali-telegram"
    ],
    "decidedAt": "2026-10-03T00:31Z",
    "by": "Omar",
    "words": "6. Forget that",
    "effect": "The owner's own ask row for his Telegram id closes with the decline: the owner is not being added to this line, nothing is needed from him here and no row asks for the id (the O4 / GL-065 decision owner-line, applied to the ask row the pin names)",
    "source": "Omar 2026-10-03 00:31 UTC \"6. Forget that\" — Ask 6, the owner's Telegram id (vault/topics/people/Omar.md); main BUILDER ORDER 2026-11-07T17:40Z carrying Omar 17:06Z Telegram 2174 (hive/EXECUTION_LOG.md); Omar's independent live review of the All Tasks page, 2026-11-07 22:13 UTC Telegram 2233, carried by main's Builder order 2026-11-07T23:10Z (hive/EXECUTION_LOG.md); pin v2.3.0 (hive/checks/2026-11-07_requirements-tasks-b3.md, 2026-11-07)"
   }
  ]
 },
 "necessity": {
  "line": "Necessity review: 323 not-Completed rows of 566 canonical rows carry a necessity tag with a dated source — Completed 243, tagged as well (no exemption) — the not-Completed 323: Needed for the demo 223 · Needed for launch 95 · Optional 4 · Dropped 1 · Proposed 0 — the Completed 243: Needed for the demo 230 · Needed for launch 13 · Optional 0 · Dropped 0 · Proposed 0 — all 566 live rows: Needed for the demo 453 · Needed for launch 108 · Optional 4 · Dropped 1 · Proposed 0; 49 archived rows sit outside the count",
  "coverage": {
   "tagged": 566,
   "of": 566,
   "notCompleted": 323,
   "completed": 243,
   "exempt": 0,
   "archivedOutside": 49
  },
  "rule": "every live canonical row carries necessity ∈ needed-for-demo | needed-for-launch | optional | dropped | proposed with a dated necessitySource (a reason when dropped), Completed rows included — no row is exempt; sources: the plan v0.2 card's finish line, the Codex sheet's own Optional title, a dated cancellation; the tasks page's rows read their canonical row's tag"
 },
 "rqSource": {
  "file": "omar_questions.json",
  "version": "1.5 — 2026-11-08, The Builder (dashboard a765bef3), tasks-correction-2 v2.0.0 — the questions re-read against what the build does: one non-empty decision sentence each, the purchase separated from the activation, a per-send scope instead of blanket consent, the current refusal preserved, and no send asked by two questions",
  "registered": [
   "RQ-01",
   "RQ-02"
  ]
 },
 "archive": [
  {
   "id": "V01·codex",
   "action": "cancelled-excluded",
   "survivingId": null,
   "survivorTitle": "",
   "reason": "cancelled-by-Omar-2026-09-15",
   "rulingSource": "Omar 2026-09-15 (Makki Demolition only; vault/topics/decisions/one company only.md) confirmed on the merged row 2026-10-24T03:03Z; the row's cancelled block and flag cancellation-applied-v2.3 in materials/canonical/2026-10-23_canonical-tasks.v2.3.json",
   "title": "Roll out across five companies",
   "placedBy": "its own plan-v0.2 card office-company (no survivor)"
  },
  {
   "id": "V82",
   "action": "cancelled-excluded",
   "survivingId": null,
   "survivorTitle": "",
   "reason": "cancelled-by-Omar-2026-09-15",
   "rulingSource": "Omar 2026-09-15 (Makki Demolition only, one company — vault/topics/decisions/one company only.md); tracker status out = Master list 'Deliberately out' (profile/Master_List_2026-09-16.md, outbox/homebase_makki/tasks.json); the row's cancelled block in materials/canonical/2026-10-23_canonical-tasks.v2.3.json",
   "title": "Branches tied into an HQ dashboard",
   "placedBy": "its own plan-v0.2 card office-company (no survivor)"
  },
  {
   "id": "V123",
   "action": "cancelled-excluded",
   "survivingId": null,
   "survivorTitle": "",
   "reason": "not-an-app-task",
   "rulingSource": "Master list 2026-09-16 status na = 'Not an app task' (profile/Master_List_2026-09-16.md; outbox/homebase_makki/tasks.json); the row's cancelled.excluded block in materials/canonical/2026-10-23_canonical-tasks.v2.3.json; 2026-10-31 (Auditor, on the Chief of Staff's 00:30Z order carrying Omar 2026-10-30 / Telegram 1902)",
   "title": "Priced in tiers, counted on supervisors, foremen and above — daily labour is not billed",
   "placedBy": "its own plan-v0.2 card office-reviews (no survivor)"
  },
  {
   "id": "V134",
   "action": "cancelled-excluded",
   "survivingId": null,
   "survivorTitle": "",
   "reason": "not-an-app-task",
   "rulingSource": "Master list 2026-09-16 status na = 'Not an app task' (profile/Master_List_2026-09-16.md; outbox/homebase_makki/tasks.json); the row's cancelled.excluded block in materials/canonical/2026-10-23_canonical-tasks.v2.3.json; 2026-10-31 (Auditor, on the Chief of Staff's 00:30Z order carrying Omar 2026-10-30 / Telegram 1902)",
   "title": "Pitch it to the VP; budget is already approved",
   "placedBy": "its own plan-v0.2 card office-reviews (no survivor)"
  },
  {
   "id": "V135",
   "action": "cancelled-excluded",
   "survivingId": null,
   "survivorTitle": "",
   "reason": "not-an-app-task",
   "rulingSource": "Master list 2026-09-16 status na = 'Not an app task' (profile/Master_List_2026-09-16.md; outbox/homebase_makki/tasks.json); the row's cancelled.excluded block in materials/canonical/2026-10-23_canonical-tasks.v2.3.json; 2026-10-31 (Auditor, on the Chief of Staff's 00:30Z order carrying Omar 2026-10-30 / Telegram 1902)",
   "title": "A second full demo with the whole team",
   "placedBy": "its own plan-v0.2 card office-reviews (no survivor)"
  },
  {
   "id": "V140",
   "action": "cancelled-excluded",
   "survivingId": null,
   "survivorTitle": "",
   "reason": "not-an-app-task",
   "rulingSource": "Master list 2026-09-16 status na = 'Not an app task' (profile/Master_List_2026-09-16.md; outbox/homebase_makki/tasks.json); the row's cancelled.excluded block in materials/canonical/2026-10-23_canonical-tasks.v2.3.json; 2026-10-31 (Auditor, on the Chief of Staff's 00:30Z order carrying Omar 2026-10-30 / Telegram 1902)",
   "title": "Makki's team meeting is on Friday — \"know Fridays, usually we have our team meetings\"",
   "placedBy": "its own plan-v0.2 card office-reviews (no survivor)"
  },
  {
   "id": "V141",
   "action": "cancelled-excluded",
   "survivingId": null,
   "survivorTitle": "",
   "reason": "not-an-app-task",
   "rulingSource": "Master list 2026-09-16 status na = 'Not an app task' (profile/Master_List_2026-09-16.md; outbox/homebase_makki/tasks.json); the row's cancelled.excluded block in materials/canonical/2026-10-23_canonical-tasks.v2.3.json; 2026-10-31 (Auditor, on the Chief of Staff's 00:30Z order carrying Omar 2026-10-30 / Telegram 1902)",
   "title": "Fieldflo cold-called Makki — \"when you guys contacted us, I figured, hey, we might as well give you guys a shot\"",
   "placedBy": "its own plan-v0.2 card office-reviews (no survivor)"
  },
  {
   "id": "O5",
   "action": "removed",
   "survivingId": null,
   "survivorTitle": "",
   "reason": "obsolete-superseded-by-2026-10-10-redesign-the-presentation-from-scratch",
   "rulingSource": "Omar 2026-10-10 — vault/topics/decisions/redesign the presentation from scratch.md; the same word recorded 2026-10-10 in hive/EXECUTION_LOG.md (two finish lines: 'The old deck is reference only — not a base to edit') and vault/STATUS.md; the row in outbox/homebase_makki/tasks.json (status part since 2026-09-16)",
   "title": "Finish the slide-by-slide pass (good / bad / change), from slide 6 on",
   "placedBy": "its own plan-v0.2 card pres-deck (no survivor)"
  },
  {
   "id": "P2",
   "action": "merged",
   "survivingId": "F01",
   "survivorTitle": "Company operations dashboard",
   "reason": "duplicate-of-F01",
   "rulingSource": "2026-10-31 (Auditor, on the Chief of Staff's 00:30Z order carrying Omar 2026-10-30 / Telegram 1902); rule R1 in materials/canonical/2026-10-23_dedupe-decisions.v2.3.md (rules R1–R6, OWNER; 2026-10-24); the page row's text in outbox/homebase_makki/tasks.json (tracker rows as built 2026-10-23, the v2.3 source A); the requirement's statement in materials/accounting/accounting-data.json (accounting r6 statements, 2026-10-11)",
   "title": "Dashboard — Owner / Company Overview",
   "placedBy": "its survivor F01"
  },
  {
   "id": "P6",
   "action": "merged",
   "survivingId": "V30·codex",
   "survivorTitle": "Project import and complete project book",
   "reason": "duplicate-of-V30·codex",
   "rulingSource": "2026-10-31 (Auditor, on the Chief of Staff's 00:30Z order carrying Omar 2026-10-30 / Telegram 1902); rule R1 in materials/canonical/2026-10-23_dedupe-decisions.v2.3.md (rules R1–R6, OWNER; 2026-10-24); the page row's text in outbox/homebase_makki/tasks.json (tracker rows as built 2026-10-23, the v2.3 source A); the requirement's statement in materials/accounting/accounting-data.json (accounting r6 statements, 2026-10-11)",
   "title": "Project Book",
   "placedBy": "its survivor V30·codex"
  },
  {
   "id": "P15",
   "action": "merged",
   "survivingId": "F29",
   "survivorTitle": "Equipment documents and rentals",
   "reason": "duplicate-of-F29",
   "rulingSource": "2026-10-31 (Auditor, on the Chief of Staff's 00:30Z order carrying Omar 2026-10-30 / Telegram 1902); rule R1 in materials/canonical/2026-10-23_dedupe-decisions.v2.3.md (rules R1–R6, OWNER; 2026-10-24); the page row's text in outbox/homebase_makki/tasks.json (tracker rows as built 2026-10-23, the v2.3 source A); the requirement's statement in materials/accounting/accounting-data.json (accounting r6 statements, 2026-10-11)",
   "title": "Equipment — Equipment & Rentals",
   "placedBy": "its survivor F29"
  },
  {
   "id": "P35",
   "action": "merged",
   "survivingId": "F29",
   "survivorTitle": "Equipment documents and rentals",
   "reason": "duplicate-of-F29",
   "rulingSource": "2026-10-31 (Auditor, on the Chief of Staff's 00:30Z order carrying Omar 2026-10-30 / Telegram 1902); rule R1 in materials/canonical/2026-10-23_dedupe-decisions.v2.3.md (rules R1–R6, OWNER; 2026-10-24); the page row's text in outbox/homebase_makki/tasks.json (tracker rows as built 2026-10-23, the v2.3 source A); the requirement's statement in materials/accounting/accounting-data.json (accounting r6 statements, 2026-10-11)",
   "title": "Equipment — Equipment & Rentals",
   "placedBy": "its survivor F29"
  },
  {
   "id": "P13",
   "action": "merged",
   "survivingId": "F30",
   "survivorTitle": "Employee and company credentials",
   "reason": "duplicate-of-F30",
   "rulingSource": "2026-10-31 (Auditor, on the Chief of Staff's 00:30Z order carrying Omar 2026-10-30 / Telegram 1902); rule R1 in materials/canonical/2026-10-23_dedupe-decisions.v2.3.md (rules R1–R6, OWNER; 2026-10-24); the page row's text in outbox/homebase_makki/tasks.json (tracker rows as built 2026-10-23, the v2.3 source A); the requirement's statement in materials/accounting/accounting-data.json (accounting r6 statements, 2026-10-11)",
   "title": "Tickets & Certs — Tickets & Certificates",
   "placedBy": "its survivor F30"
  },
  {
   "id": "P33",
   "action": "merged",
   "survivingId": "F30",
   "survivorTitle": "Employee and company credentials",
   "reason": "duplicate-of-F30",
   "rulingSource": "2026-10-31 (Auditor, on the Chief of Staff's 00:30Z order carrying Omar 2026-10-30 / Telegram 1902); rule R1 in materials/canonical/2026-10-23_dedupe-decisions.v2.3.md (rules R1–R6, OWNER; 2026-10-24); the page row's text in outbox/homebase_makki/tasks.json (tracker rows as built 2026-10-23, the v2.3 source A); the requirement's statement in materials/accounting/accounting-data.json (accounting r6 statements, 2026-10-11)",
   "title": "My Crew",
   "placedBy": "its survivor F30"
  },
  {
   "id": "P17",
   "action": "merged",
   "survivingId": "R08",
   "survivorTitle": "Give accounting staff a restricted workspace",
   "reason": "duplicate-of-R08",
   "rulingSource": "2026-10-31 (Auditor, on the Chief of Staff's 00:30Z order carrying Omar 2026-10-30 / Telegram 1902); rule R1 in materials/canonical/2026-10-23_dedupe-decisions.v2.3.md (rules R1–R6, OWNER; 2026-10-24); the page row's text in outbox/homebase_makki/tasks.json (tracker rows as built 2026-10-23, the v2.3 source A); the requirement's statement in materials/accounting/accounting-data.json (accounting r6 statements, 2026-10-11)",
   "title": "Dashboard — Accounting Overview",
   "placedBy": "its survivor R08"
  },
  {
   "id": "P18",
   "action": "merged",
   "survivingId": "R08",
   "survivorTitle": "Give accounting staff a restricted workspace",
   "reason": "duplicate-of-R08",
   "rulingSource": "2026-10-31 (Auditor, on the Chief of Staff's 00:30Z order carrying Omar 2026-10-30 / Telegram 1902); rule R1 in materials/canonical/2026-10-23_dedupe-decisions.v2.3.md (rules R1–R6, OWNER; 2026-10-24); the page row's text in outbox/homebase_makki/tasks.json (tracker rows as built 2026-10-23, the v2.3 source A); the requirement's statement in materials/accounting/accounting-data.json (accounting r6 statements, 2026-10-11)",
   "title": "Outstanding — Outstanding Receivables",
   "placedBy": "its survivor R08"
  },
  {
   "id": "P20",
   "action": "merged",
   "survivingId": "R08",
   "survivorTitle": "Give accounting staff a restricted workspace",
   "reason": "duplicate-of-R08",
   "rulingSource": "2026-10-31 (Auditor, on the Chief of Staff's 00:30Z order carrying Omar 2026-10-30 / Telegram 1902); rule R1 in materials/canonical/2026-10-23_dedupe-decisions.v2.3.md (rules R1–R6, OWNER; 2026-10-24); the page row's text in outbox/homebase_makki/tasks.json (tracker rows as built 2026-10-23, the v2.3 source A); the requirement's statement in materials/accounting/accounting-data.json (accounting r6 statements, 2026-10-11)",
   "title": "Payments",
   "placedBy": "its survivor R08"
  },
  {
   "id": "P19",
   "action": "merged",
   "survivingId": "R11",
   "survivorTitle": "Flag jobs due for invoicing",
   "reason": "duplicate-of-R11",
   "rulingSource": "2026-10-31 (Auditor, on the Chief of Staff's 00:30Z order carrying Omar 2026-10-30 / Telegram 1902); rule R1 in materials/canonical/2026-10-23_dedupe-decisions.v2.3.md (rules R1–R6, OWNER; 2026-10-24); the page row's text in outbox/homebase_makki/tasks.json (tracker rows as built 2026-10-23, the v2.3 source A); the requirement's statement in materials/accounting/accounting-data.json (accounting r6 statements, 2026-10-11)",
   "title": "To Invoice",
   "placedBy": "its survivor R11"
  },
  {
   "id": "P21",
   "action": "merged",
   "survivingId": "V05·codex",
   "survivorTitle": "Payroll-only accountant role",
   "reason": "duplicate-of-V05·codex",
   "rulingSource": "2026-10-31 (Auditor, on the Chief of Staff's 00:30Z order carrying Omar 2026-10-30 / Telegram 1902); rule R1 in materials/canonical/2026-10-23_dedupe-decisions.v2.3.md (rules R1–R6, OWNER; 2026-10-24); the page row's text in outbox/homebase_makki/tasks.json (tracker rows as built 2026-10-23, the v2.3 source A); the requirement's statement in materials/accounting/accounting-data.json (accounting r6 statements, 2026-10-11)",
   "title": "Payroll hours",
   "placedBy": "its survivor V05·codex"
  },
  {
   "id": "P26",
   "action": "merged",
   "survivingId": "F06",
   "survivorTitle": "Estimate versus actual project view",
   "reason": "duplicate-of-F06",
   "rulingSource": "2026-10-31 (Auditor, on the Chief of Staff's 00:30Z order carrying Omar 2026-10-30 / Telegram 1902); rule R1 in materials/canonical/2026-10-23_dedupe-decisions.v2.3.md (rules R1–R6, OWNER; 2026-10-24); the page row's text in outbox/homebase_makki/tasks.json (tracker rows as built 2026-10-23, the v2.3 source A); the requirement's statement in materials/accounting/accounting-data.json (accounting r6 statements, 2026-10-11)",
   "title": "Bid vs Actual",
   "placedBy": "its survivor F06"
  },
  {
   "id": "P40",
   "action": "merged",
   "survivingId": "V19·codex",
   "survivorTitle": "Employee QR certificate access",
   "reason": "duplicate-of-V19·codex",
   "rulingSource": "2026-10-31 (Auditor, on the Chief of Staff's 00:30Z order carrying Omar 2026-10-30 / Telegram 1902); rule R1 in materials/canonical/2026-10-23_dedupe-decisions.v2.3.md (rules R1–R6, OWNER; 2026-10-24); the page row's text in outbox/homebase_makki/tasks.json (tracker rows as built 2026-10-23, the v2.3 source A); the requirement's statement in materials/accounting/accounting-data.json (accounting r6 statements, 2026-10-11)",
   "title": "My Tickets",
   "placedBy": "its survivor V19·codex"
  },
  {
   "id": "P41",
   "action": "merged",
   "survivingId": "V19·codex",
   "survivorTitle": "Employee QR certificate access",
   "reason": "duplicate-of-V19·codex",
   "rulingSource": "2026-10-31 (Auditor, on the Chief of Staff's 00:30Z order carrying Omar 2026-10-30 / Telegram 1902); rule R1 in materials/canonical/2026-10-23_dedupe-decisions.v2.3.md (rules R1–R6, OWNER; 2026-10-24); the page row's text in outbox/homebase_makki/tasks.json (tracker rows as built 2026-10-23, the v2.3 source A); the requirement's statement in materials/accounting/accounting-data.json (accounting r6 statements, 2026-10-11)",
   "title": "Read-only ticket check",
   "placedBy": "its survivor V19·codex"
  },
  {
   "id": "A19",
   "action": "merged",
   "survivingId": "V19·codex",
   "survivorTitle": "Employee QR certificate access",
   "reason": "duplicate-of-V19·codex",
   "rulingSource": "2026-10-31 (Auditor, on the Chief of Staff's 00:30Z order carrying Omar 2026-10-30 / Telegram 1902); rule R1 in materials/canonical/2026-10-23_dedupe-decisions.v2.3.md (rules R1–R6, OWNER; 2026-10-24); the page row's text in outbox/homebase_makki/tasks.json (tracker rows as built 2026-10-23, the v2.3 source A); the requirement's statement in materials/accounting/accounting-data.json (accounting r6 statements, 2026-10-11)",
   "title": "See what the inspector sees → the scan page in a sheet, plus Open it as its own page ↗",
   "placedBy": "its survivor V19·codex"
  },
  {
   "id": "A56",
   "action": "merged",
   "survivingId": "V19·codex",
   "survivorTitle": "Employee QR certificate access",
   "reason": "duplicate-of-V19·codex",
   "rulingSource": "2026-10-31 (Auditor, on the Chief of Staff's 00:30Z order carrying Omar 2026-10-30 / Telegram 1902); rule R1 in materials/canonical/2026-10-23_dedupe-decisions.v2.3.md (rules R1–R6, OWNER; 2026-10-24); the page row's text in outbox/homebase_makki/tasks.json (tracker rows as built 2026-10-23, the v2.3 source A); the requirement's statement in materials/accounting/accounting-data.json (accounting r6 statements, 2026-10-11)",
   "title": "Scan the QR → page 41. Drawn on the device, so it works with no signal",
   "placedBy": "its survivor V19·codex"
  },
  {
   "id": "A12",
   "action": "merged",
   "survivingId": "V06·codex",
   "survivorTitle": "Granular module permissions",
   "reason": "duplicate-of-V06·codex",
   "rulingSource": "2026-10-31 (Auditor, on the Chief of Staff's 00:30Z order carrying Omar 2026-10-30 / Telegram 1902); rule R1 in materials/canonical/2026-10-23_dedupe-decisions.v2.3.md (rules R1–R6, OWNER; 2026-10-24); the page row's text in outbox/homebase_makki/tasks.json (tracker rows as built 2026-10-23, the v2.3 source A); the requirement's statement in materials/accounting/accounting-data.json (accounting r6 statements, 2026-10-11)",
   "title": "Per-person, per-tab on/off switch — flip it, sign in as them, the tab is gone from their menu and will not open by link",
   "placedBy": "its survivor V06·codex"
  },
  {
   "id": "A20",
   "action": "merged",
   "survivingId": "R04",
   "survivorTitle": "Preserve categorized job costs",
   "reason": "duplicate-of-R04",
   "rulingSource": "2026-10-31 (Auditor, on the Chief of Staff's 00:30Z order carrying Omar 2026-10-30 / Telegram 1902); rule R1 in materials/canonical/2026-10-23_dedupe-decisions.v2.3.md (rules R1–R6, OWNER; 2026-10-24); the page row's text in outbox/homebase_makki/tasks.json (tracker rows as built 2026-10-23, the v2.3 source A); the requirement's statement in materials/accounting/accounting-data.json (accounting r6 statements, 2026-10-11)",
   "title": "Job modal — invoice #, PO #, quote date, demo date, then the money block gated per role (Owner: sell, total w/GST, cost, profit, margin, GST + a cost breakdown · Site lead: contract, actual cost, cost-vs-contract, assignee + his cost breakdown · Bookkeeper: invoice value, owed, GST, to-invoice). Crew and Estimator cannot open it at all (openJob returns early)",
   "placedBy": "its survivor R04"
  },
  {
   "id": "A24",
   "action": "merged",
   "survivingId": "F06",
   "survivorTitle": "Estimate versus actual project view",
   "reason": "duplicate-of-F06",
   "rulingSource": "2026-10-31 (Auditor, on the Chief of Staff's 00:30Z order carrying Omar 2026-10-30 / Telegram 1902); rule R1 in materials/canonical/2026-10-23_dedupe-decisions.v2.3.md (rules R1–R6, OWNER; 2026-10-24); the page row's text in outbox/homebase_makki/tasks.json (tracker rows as built 2026-10-23, the v2.3 source A); the requirement's statement in materials/accounting/accounting-data.json (accounting r6 statements, 2026-10-11)",
   "title": "Budget, spent, a used bar,  percent and (owner only) variance, per code and in total",
   "placedBy": "its survivor F06"
  },
  {
   "id": "A28",
   "action": "merged",
   "survivingId": "F08",
   "survivorTitle": "Project document sharing",
   "reason": "duplicate-of-F08",
   "rulingSource": "2026-10-31 (Auditor, on the Chief of Staff's 00:30Z order carrying Omar 2026-10-30 / Telegram 1902); rule R1 in materials/canonical/2026-10-23_dedupe-decisions.v2.3.md (rules R1–R6, OWNER; 2026-10-24); the page row's text in outbox/homebase_makki/tasks.json (tracker rows as built 2026-10-23, the v2.3 source A); the requirement's statement in materials/accounting/accounting-data.json (accounting r6 statements, 2026-10-11)",
   "title": "Take / choose photo — stage, caption, camera or file picker; resized to 960 px, kept on the device, capped at 24 added photos",
   "placedBy": "its survivor F08"
  },
  {
   "id": "A29",
   "action": "merged",
   "survivingId": "F08",
   "survivorTitle": "Project document sharing",
   "reason": "duplicate-of-F08",
   "rulingSource": "2026-10-31 (Auditor, on the Chief of Staff's 00:30Z order carrying Omar 2026-10-30 / Telegram 1902); rule R1 in materials/canonical/2026-10-23_dedupe-decisions.v2.3.md (rules R1–R6, OWNER; 2026-10-24); the page row's text in outbox/homebase_makki/tasks.json (tracker rows as built 2026-10-23, the v2.3 source A); the requirement's statement in materials/accounting/accounting-data.json (accounting r6 statements, 2026-10-11)",
   "title": "Open a photo full size, with ← Back to job",
   "placedBy": "its survivor F08"
  },
  {
   "id": "A30",
   "action": "merged",
   "survivingId": "F08",
   "survivorTitle": "Project document sharing",
   "reason": "duplicate-of-F08",
   "rulingSource": "2026-10-31 (Auditor, on the Chief of Staff's 00:30Z order carrying Omar 2026-10-30 / Telegram 1902); rule R1 in materials/canonical/2026-10-23_dedupe-decisions.v2.3.md (rules R1–R6, OWNER; 2026-10-24); the page row's text in outbox/homebase_makki/tasks.json (tracker rows as built 2026-10-23, the v2.3 source A); the requirement's statement in materials/accounting/accounting-data.json (accounting r6 statements, 2026-10-11)",
   "title": "Open a document — a placeholder page watermarked DEMO, with which jobs require it, and ← Back to job",
   "placedBy": "its survivor F08"
  },
  {
   "id": "A31",
   "action": "merged",
   "survivingId": "V35·codex",
   "survivorTitle": "Project documents and closeout pack",
   "reason": "duplicate-of-V35·codex",
   "rulingSource": "2026-10-31 (Auditor, on the Chief of Staff's 00:30Z order carrying Omar 2026-10-30 / Telegram 1902); rule R1 in materials/canonical/2026-10-23_dedupe-decisions.v2.3.md (rules R1–R6, OWNER; 2026-10-24); the page row's text in outbox/homebase_makki/tasks.json (tracker rows as built 2026-10-23, the v2.3 source A); the requirement's statement in materials/accounting/accounting-data.json (accounting r6 statements, 2026-10-11)",
   "title": "Open the closeout report — scope, permits, tickets the job needed, waste and landfill tickets, hours on the job, change orders, cost codes (owner only), safety, documents, photos, three signature lines. Owner copy carries prices; the site copy is headed \"no prices\"",
   "placedBy": "its survivor V35·codex"
  },
  {
   "id": "A57",
   "action": "merged",
   "survivingId": "P42",
   "survivorTitle": "Read-only equipment check",
   "reason": "duplicate-of-P42",
   "rulingSource": "2026-10-31 (Auditor, on the Chief of Staff's 00:30Z order carrying Omar 2026-10-30 / Telegram 1902); rule R1 in materials/canonical/2026-10-23_dedupe-decisions.v2.3.md (rules R1–R6, OWNER; 2026-10-24); the page row's text in outbox/homebase_makki/tasks.json (tracker rows as built 2026-10-23, the v2.3 source A); the requirement's statement in materials/accounting/accounting-data.json (accounting r6 statements, 2026-10-11)",
   "title": "Scan the QR → page 42",
   "placedBy": "its survivor P42"
  },
  {
   "id": "A61",
   "action": "merged",
   "survivingId": "H2",
   "survivorTitle": "The Collector — Nightly: finished-not-invoiced, overdue by age, holdbacks; drafts invoices, never sends",
   "reason": "duplicate-of-H2",
   "rulingSource": "2026-10-31 (Auditor, on the Chief of Staff's 00:30Z order carrying Omar 2026-10-30 / Telegram 1902); rule R1 in materials/canonical/2026-10-23_dedupe-decisions.v2.3.md (rules R1–R6, OWNER; 2026-10-24); both rows in outbox/homebase_makki/tasks.json (tracker rows as built 2026-10-23, the v2.3 source A)",
   "title": "Nightly: what is not invoiced, what is overdue by age, holdbacks. Writes invoice drafts to outbox/invoices/ under a DRAFT header. The owner sends invoices, not the app",
   "placedBy": "its survivor H2"
  },
  {
   "id": "A62",
   "action": "merged",
   "survivingId": "H3",
   "survivorTitle": "The Foreman's Voice — A foreman's voice note becomes a filed daily report",
   "reason": "duplicate-of-H3",
   "rulingSource": "2026-10-31 (Auditor, on the Chief of Staff's 00:30Z order carrying Omar 2026-10-30 / Telegram 1902); rule R1 in materials/canonical/2026-10-23_dedupe-decisions.v2.3.md (rules R1–R6, OWNER; 2026-10-24); both rows in outbox/homebase_makki/tasks.json (tracker rows as built 2026-10-23, the v2.3 source A)",
   "title": "Turns a foreman's end-of-day words (typed or transcribed) into a filed daily and a 5-line confirmation",
   "placedBy": "its survivor H3"
  },
  {
   "id": "A63",
   "action": "merged",
   "survivingId": "H4",
   "survivorTitle": "The Ticket Keeper — Expiring tickets, who is un-bookable, hard-hat codes — and, since the merge, the OHS and asbestos paperwork tied to the right site",
   "reason": "duplicate-of-H4",
   "rulingSource": "2026-10-31 (Auditor, on the Chief of Staff's 00:30Z order carrying Omar 2026-10-30 / Telegram 1902); rule R1 in materials/canonical/2026-10-23_dedupe-decisions.v2.3.md (rules R1–R6, OWNER; 2026-10-24); both rows in outbox/homebase_makki/tasks.json (tracker rows as built 2026-10-23, the v2.3 source A)",
   "title": "Weekly: expiring tickets, expiries, and who cannot be booked on a crew",
   "placedBy": "its survivor H4"
  },
  {
   "id": "V129",
   "action": "merged",
   "survivingId": "V05·codex",
   "survivorTitle": "Payroll-only accountant role",
   "reason": "duplicate-of-V05·codex",
   "rulingSource": "2026-10-31 (Auditor, on the Chief of Staff's 00:30Z order carrying Omar 2026-10-30 / Telegram 1902); rule R1 in materials/canonical/2026-10-23_dedupe-decisions.v2.3.md (rules R1–R6, OWNER; 2026-10-24); the walkthrough row in outbox/homebase_makki/tasks.json (tracker rows as built 2026-10-23, the v2.3 source A); the requirement in materials/accounting/accounting-data.json (accounting r6 statements, 2026-10-11) and GO_LIVE.md",
   "title": "Let the accountant see payroll and nothing else",
   "placedBy": "its survivor V05·codex"
  },
  {
   "id": "V130",
   "action": "merged",
   "survivingId": "GL-076",
   "survivorTitle": "A short orientation video for managers — a walkthrough the owner can send his managers so they use the app without being taught one at a time; the owner asked Fieldflo f…",
   "reason": "duplicate-of-GL-076",
   "rulingSource": "2026-10-31 (Auditor, on the Chief of Staff's 00:30Z order carrying Omar 2026-10-30 / Telegram 1902); rule R1 in materials/canonical/2026-10-23_dedupe-decisions.v2.3.md (rules R1–R6, OWNER; 2026-10-24); the walkthrough row in outbox/homebase_makki/tasks.json (tracker rows as built 2026-10-23, the v2.3 source A); the requirement in materials/accounting/accounting-data.json (accounting r6 statements, 2026-10-11) and GO_LIVE.md",
   "title": "An orientation video for the program, to share with managers",
   "placedBy": "its survivor GL-076"
  },
  {
   "id": "O3",
   "action": "merged",
   "survivingId": "GL-054",
   "survivorTitle": "The Collector's nightly cron — approved by Omar 2026-10-03 00:31 UTC (\"2. Yes approve\"); set 00:32 UTC as job `2cc5e203`, `0 5 * * *` America/Edmonton, isola…",
   "reason": "duplicate-of-GL-054",
   "rulingSource": "Omar 2026-10-03 00:31 UTC \"2. Yes approve\" — GO_LIVE.md lines 142–143 (GL-054, GL-055: crons set 00:32 UTC) and materials/accounting/accounting-data.json (accounting r6 statements, 2026-10-11); the ask row in outbox/homebase_makki/tasks.json (tracker rows as built 2026-10-23, the v2.3 source A); 2026-10-31 (Auditor, on the Chief of Staff's 00:30Z order carrying Omar 2026-10-30 / Telegram 1902)",
   "title": "Say yes to the nightly Collector and the Monday Ticket Keeper schedules",
   "placedBy": "its survivor GL-054"
  },
  {
   "id": "O6",
   "action": "merged",
   "survivingId": "GL-053",
   "survivorTitle": "A Makki address instead of a pages.dev link (app.makkiinc.ca or similar) — whose Cloudflare account holds Makki's app long-term, then a domain pointed at it;…",
   "reason": "duplicate-of-GL-053",
   "rulingSource": "2026-10-31 (Auditor, on the Chief of Staff's 00:30Z order carrying Omar 2026-10-30 / Telegram 1902); v1 §E precedent restated in materials/canonical/2026-10-23_dedupe-decisions.v2.3.md (rules R1–R6, OWNER; 2026-10-24); the ask row and its link key in outbox/homebase_makki/tasks.json (tracker rows as built 2026-10-23, the v2.3 source A); the GO_LIVE ask row in GO_LIVE.md (2026-10-04) and materials/accounting/accounting-data.json (accounting r6 statements, 2026-10-11)",
   "title": "Hosting: the owner's own Cloudflare account, or EazyLife's, and a Makki address",
   "placedBy": "its survivor GL-053"
  },
  {
   "id": "The owner 12",
   "action": "merged",
   "survivingId": "GL-053",
   "survivorTitle": "A Makki address instead of a pages.dev link (app.makkiinc.ca or similar) — whose Cloudflare account holds Makki's app long-term, then a domain pointed at it;…",
   "reason": "duplicate-of-GL-053",
   "rulingSource": "2026-10-31 (Auditor, on the Chief of Staff's 00:30Z order carrying Omar 2026-10-30 / Telegram 1902); v1 §E precedent restated in materials/canonical/2026-10-23_dedupe-decisions.v2.3.md (rules R1–R6, OWNER; 2026-10-24); the ask row and its link key in outbox/homebase_makki/tasks.json (tracker rows as built 2026-10-23, the v2.3 source A); the GO_LIVE ask row in GO_LIVE.md (2026-10-04) and materials/accounting/accounting-data.json (accounting r6 statements, 2026-10-11)",
   "title": "Hosting: your Cloudflare account or EazyLife's, and a Makki address",
   "placedBy": "its survivor GL-053"
  },
  {
   "id": "O2",
   "action": "merged",
   "survivingId": "GL-067",
   "survivorTitle": "Ask 8 — A texting line, the crew's numbers, and the wording — the only ask that costs money; unblocks labourers-by-text",
   "reason": "duplicate-of-GL-067",
   "rulingSource": "2026-10-31 (Auditor, on the Chief of Staff's 00:30Z order carrying Omar 2026-10-30 / Telegram 1902); v1 §E precedent restated in materials/canonical/2026-10-23_dedupe-decisions.v2.3.md (rules R1–R6, OWNER; 2026-10-24); the ask row and its link key in outbox/homebase_makki/tasks.json (tracker rows as built 2026-10-23, the v2.3 source A); the GO_LIVE ask row in GO_LIVE.md (2026-10-04) and materials/accounting/accounting-data.json (accounting r6 statements, 2026-10-11)",
   "title": "Say go on the texting number (about $10–20 a month)",
   "placedBy": "its survivor GL-067"
  },
  {
   "id": "The owner 10",
   "action": "merged",
   "survivingId": "GL-067",
   "survivorTitle": "Ask 8 — A texting line, the crew's numbers, and the wording — the only ask that costs money; unblocks labourers-by-text",
   "reason": "duplicate-of-GL-067",
   "rulingSource": "2026-10-31 (Auditor, on the Chief of Staff's 00:30Z order carrying Omar 2026-10-30 / Telegram 1902); v1 §E precedent restated in materials/canonical/2026-10-23_dedupe-decisions.v2.3.md (rules R1–R6, OWNER; 2026-10-24); the ask row and its link key in outbox/homebase_makki/tasks.json (tracker rows as built 2026-10-23, the v2.3 source A); the GO_LIVE ask row in GO_LIVE.md (2026-10-04) and materials/accounting/accounting-data.json (accounting r6 statements, 2026-10-11)",
   "title": "Yes to the texting number (about $10–20 a month)",
   "placedBy": "its survivor GL-067"
  },
  {
   "id": "The owner 11",
   "action": "merged",
   "survivingId": "GL-067",
   "survivorTitle": "Ask 8 — A texting line, the crew's numbers, and the wording — the only ask that costs money; unblocks labourers-by-text",
   "reason": "duplicate-of-GL-067",
   "rulingSource": "2026-10-31 (Auditor, on the Chief of Staff's 00:30Z order carrying Omar 2026-10-30 / Telegram 1902); v1 §E precedent restated in materials/canonical/2026-10-23_dedupe-decisions.v2.3.md (rules R1–R6, OWNER; 2026-10-24); the ask row and its link key in outbox/homebase_makki/tasks.json (tracker rows as built 2026-10-23, the v2.3 source A); the GO_LIVE ask row in GO_LIVE.md (2026-10-04) and materials/accounting/accounting-data.json (accounting r6 statements, 2026-10-11)",
   "title": "OK the two text wordings (morning, end of day)",
   "placedBy": "its survivor GL-067"
  },
  {
   "id": "The owner 14",
   "action": "merged",
   "survivingId": "GL-019",
   "survivorTitle": "GPS clock-in / photo clock-out (FlōTime) — location-verified start, photo-confirmed stop, buddy-punch prevention; and where each man clocked in from, includi…",
   "reason": "duplicate-of-GL-019",
   "rulingSource": "2026-10-31 (Auditor, on the Chief of Staff's 00:30Z order carrying Omar 2026-10-30 / Telegram 1902); v1 §E precedent restated in materials/canonical/2026-10-23_dedupe-decisions.v2.3.md (rules R1–R6, OWNER; 2026-10-24); the ask row and its link key in outbox/homebase_makki/tasks.json (tracker rows as built 2026-10-23, the v2.3 source A); the GO_LIVE ask row in GO_LIVE.md (2026-10-04) and materials/accounting/accounting-data.json (accounting r6 statements, 2026-10-11)",
   "title": "Do you want to see where each man clocks in from?",
   "placedBy": "its survivor GL-019"
  },
  {
   "id": "The owner 15",
   "action": "merged",
   "survivingId": "GL-033",
   "survivorTitle": "CRM — contacts, prospect records, job walks, a reach-out log with reminders, proposal due-date alerts; the portal has a Pipeline and a Proposal printer, no c…",
   "reason": "duplicate-of-GL-033",
   "rulingSource": "2026-10-31 (Auditor, on the Chief of Staff's 00:30Z order carrying Omar 2026-10-30 / Telegram 1902); v1 §E precedent restated in materials/canonical/2026-10-23_dedupe-decisions.v2.3.md (rules R1–R6, OWNER; 2026-10-24); the ask row and its link key in outbox/homebase_makki/tasks.json (tracker rows as built 2026-10-23, the v2.3 source A); the GO_LIVE ask row in GO_LIVE.md (2026-10-04) and materials/accounting/accounting-data.json (accounting r6 statements, 2026-10-11)",
   "title": "Do you want a CRM: contacts, job walks, reach-outs?",
   "placedBy": "its survivor GL-033"
  },
  {
   "id": "The owner 16",
   "action": "merged",
   "survivingId": "GL-040",
   "survivorTitle": "Payroll — a multi-approver sign-off chain with a trailing history (who besides the owner is allowed to approve payroll, and in what order); single approver is buil…",
   "reason": "duplicate-of-GL-040",
   "rulingSource": "2026-10-31 (Auditor, on the Chief of Staff's 00:30Z order carrying Omar 2026-10-30 / Telegram 1902); v1 §E precedent restated in materials/canonical/2026-10-23_dedupe-decisions.v2.3.md (rules R1–R6, OWNER; 2026-10-24); the ask row and its link key in outbox/homebase_makki/tasks.json (tracker rows as built 2026-10-23, the v2.3 source A); the GO_LIVE ask row in GO_LIVE.md (2026-10-04) and materials/accounting/accounting-data.json (accounting r6 statements, 2026-10-11)",
   "title": "Who else signs off payroll, if anyone?",
   "placedBy": "its survivor GL-040"
  },
  {
   "id": "The owner 18",
   "action": "merged",
   "survivingId": "GL-045",
   "survivorTitle": "The DEMO band comes off — the permanent band should stay until the owner picks the day",
   "reason": "duplicate-of-GL-045",
   "rulingSource": "2026-10-31 (Auditor, on the Chief of Staff's 00:30Z order carrying Omar 2026-10-30 / Telegram 1902); v1 §E precedent restated in materials/canonical/2026-10-23_dedupe-decisions.v2.3.md (rules R1–R6, OWNER; 2026-10-24); the ask row and its link key in outbox/homebase_makki/tasks.json (tracker rows as built 2026-10-23, the v2.3 source A); the GO_LIVE ask row in GO_LIVE.md (2026-10-04) and materials/accounting/accounting-data.json (accounting r6 statements, 2026-10-11)",
   "title": "The day the demo data comes out",
   "placedBy": "its survivor GL-045"
  },
  {
   "id": "The owner 3",
   "action": "merged",
   "survivingId": "GL-068",
   "survivorTitle": "Ask 9 — Equipment list, photos, cost codes, a change-order form — what takes the app off demo data",
   "reason": "duplicate-of-GL-068",
   "rulingSource": "2026-10-31 (Auditor, on the Chief of Staff's 00:30Z order carrying Omar 2026-10-30 / Telegram 1902); v1 §E precedent restated in materials/canonical/2026-10-23_dedupe-decisions.v2.3.md (rules R1–R6, OWNER; 2026-10-24); the ask row and its link key in outbox/homebase_makki/tasks.json (tracker rows as built 2026-10-23, the v2.3 source A); the GO_LIVE ask row in GO_LIVE.md (2026-10-04) and materials/accounting/accounting-data.json (accounting r6 statements, 2026-10-11)",
   "title": "Your equipment list",
   "placedBy": "its survivor GL-068"
  },
  {
   "id": "O7",
   "action": "merged",
   "survivingId": "GL-076",
   "survivorTitle": "A short orientation video for managers — a walkthrough the owner can send his managers so they use the app without being taught one at a time; the owner asked Fieldflo f…",
   "reason": "duplicate-of-GL-076",
   "rulingSource": "2026-10-31 (Auditor, on the Chief of Staff's 00:30Z order carrying Omar 2026-10-30 / Telegram 1902); v1 §E precedent restated in materials/canonical/2026-10-23_dedupe-decisions.v2.3.md (rules R1–R6, OWNER; 2026-10-24); the ask row and its link key in outbox/homebase_makki/tasks.json (tracker rows as built 2026-10-23, the v2.3 source A); the GO_LIVE ask row in GO_LIVE.md (2026-10-04) and materials/accounting/accounting-data.json (accounting r6 statements, 2026-10-11)",
   "title": "An orientation video for managers: a screen recording with a voiceover",
   "placedBy": "its survivor GL-076"
  }
 ]
}