{
  "nodes": [
    {
      "ID": "FAM-1",
      "name": "Family Wallet launch",
      "type": "Initiative",
      "properties": {
        "Key": "FAM-1",
        "Status": "In Progress",
        "Priority": "Highest",
        "Team": "",
        "Assignee": "Priya Natarajan",
        "Created": "2026-08-10T10:00:00",
        "Start": "2026-08-31T09:00:00",
        "Due date": "2026-11-27",
        "Timeline date": "2026-08-31T09:00:00",
        "Progress": "35%",
        "Strategic theme": "Digital family banking",
        "Objective": "Win young families as primary bank customers",
        "Key result": "25,000 active family wallets by 30 June 2027",
        "Key result target": 25000,
        "Key result current": 0,
        "Key result score": 0,
        "Business value": 80,
        "Time criticality": 13,
        "Risk reduction": 8,
        "Job size": 20,
        "WSJF score": 1.7,
        "Approved budget EUR": 1450000,
        "Forecast spend EUR": 1520000,
        "Funding status": "Funded",
        "Health": "At risk",
        "Executive sponsor": "Clara Hoffmann",
        "Target quarter": "2026 Q4",
        "Expected benefit KPI": "Active family wallets",
        "Jira link": "https://jira.example.com/browse/FAM-1"
      },
      "description": "Family Wallet launch is Kestrel Bank's initiative to let a guardian open a shared wallet for children aged 8 to 17, pay scheduled allowances, set spending limits and get a push message the moment a child pays. Priya Natarajan, the product owner, opened it on 10 August under the strategic theme Digital family banking, with Clara Hoffmann as executive sponsor, because the bank wants to win young families as primary customers. Its key result is 25,000 active family wallets by 30 June 2027.\n\nThe work runs through four epics: family accounts and onboarding, the wallet with allowances and spending controls, notifications and insights, and launch readiness. They ship in two releases, a staff pilot for 200 employee families on 6 November and the public launch on 27 November. Because children and payments are involved, legal consent, identity checks, risk scoring and privacy sign-off sit on the path of almost every feature, so eight teams depend on each other's work.\n\nBy mid-October the initiative is At risk. Forecast spend of EUR 1.52 million is above the approved EUR 1.45 million, and the staff pilot go/no-go on 4 November faces a reopened double-allowance bug, an unsigned ID provider agreement, child-app certificates nobody owns and a privacy sign-off that slipped a sprint.\n\nKestrel Bank, its people and this project are fictional; the data is simulated for demonstration.\n\nhttps://jira.example.com/browse/FAM-1",
      "size": 3.5,
      "position": {
        "x": 9.841000000000014,
        "y": -23.917999999999946,
        "z": 0
      }
    },
    {
      "ID": "FAM-2",
      "name": "Family accounts and onboarding",
      "type": "Epic",
      "properties": {
        "Key": "FAM-2",
        "Status": "In Progress",
        "Priority": "High",
        "Team": "Product",
        "Assignee": "Priya Natarajan",
        "Created": "2026-08-12T10:00:00",
        "Start": "2026-08-31T09:00:00",
        "Due date": "2026-11-06",
        "Timeline date": "2026-08-31T09:00:00",
        "Progress": "70%",
        "Business value": 13,
        "Time criticality": 13,
        "Risk reduction": 8,
        "Job size": 13,
        "WSJF score": 2.62,
        "Approved budget EUR": 420000,
        "Health": "On track",
        "Jira link": "https://jira.example.com/browse/FAM-2"
      },
      "description": "Family accounts and onboarding is the epic for everything a family needs before any money moves: the family group, a second guardian, child profiles with parental consent, and an identity check on the guardian. Priya Natarajan opened it on 12 August as the first block of the Family Wallet launch, because no wallet can exist until the bank knows who the family is and has lawful consent for each child.\n\nIt holds three features. Family group creation shipped in release 0.9 Foundations on 9 October after a joint-account bug was fixed along the way. Child onboarding with consent is almost done: the add-child flow closed on 14 October, with one small-screen bug in review and the child PIN sign-in still open. Guardian identity verification is the weak spot: the ID capture screen is flagged until the provider agreement is signed.\n\nThe epic is On track overall, but its unfinished items feed straight into the end-to-end regression suite and so into the staff pilot go/no-go.\n\nhttps://jira.example.com/browse/FAM-2",
      "size": 3,
      "position": {
        "x": 10.034,
        "y": -51.315640322140084,
        "z": 0
      }
    },
    {
      "ID": "FAM-3",
      "name": "Wallet, allowances and spending controls",
      "type": "Epic",
      "properties": {
        "Key": "FAM-3",
        "Status": "In Progress",
        "Priority": "High",
        "Team": "Product",
        "Assignee": "Priya Natarajan",
        "Created": "2026-08-12T10:20:00",
        "Start": "2026-09-14T09:00:00",
        "Due date": "2026-11-27",
        "Timeline date": "2026-09-14T09:00:00",
        "Progress": "29%",
        "Business value": 20,
        "Time criticality": 8,
        "Risk reduction": 5,
        "Job size": 20,
        "WSJF score": 1.65,
        "Approved budget EUR": 530000,
        "Health": "At risk",
        "Jira link": "https://jira.example.com/browse/FAM-3"
      },
      "description": "Wallet, allowances and spending controls is the money side of Family Wallet: a sub-ledger per child, top-ups from the guardian, scheduled allowances, and the limits and merchant blocks guardians set on child card payments. Priya Natarajan opened it on 12 August because the pilot promise to families is a wallet that holds real money and pays pocket money on its own.\n\nIts first feature cleared early: the per-child sub-ledger finished on 24 September and opened the way for top-ups, reconciliation and the allowance API. The allowance feature then ran into the epic's biggest problem, a bug that pays the allowance twice when the clocks change, which was fixed, reopened by QA on 14 October and now blocks the set-allowance screen and the pilot decision. Spending limits wait for the card event stream and are planned for the public launch.\n\nHealth is At risk because of the reopened bug and the event-stream delay that holds up the whole limits chain.\n\nhttps://jira.example.com/browse/FAM-3",
      "size": 3,
      "position": {
        "x": 17.129,
        "y": -51.22764032214009,
        "z": -2.842170943040401e-14
      }
    },
    {
      "ID": "FAM-4",
      "name": "Notifications and insights",
      "type": "Epic",
      "properties": {
        "Key": "FAM-4",
        "Status": "In Progress",
        "Priority": "Medium",
        "Team": "Product",
        "Assignee": "Priya Natarajan",
        "Created": "2026-08-12T10:40:00",
        "Start": "2026-09-28T09:00:00",
        "Due date": "2026-11-27",
        "Timeline date": "2026-09-28T09:00:00",
        "Progress": "6%",
        "Business value": 8,
        "Time criticality": 5,
        "Risk reduction": 3,
        "Job size": 13,
        "WSJF score": 1.23,
        "Approved budget EUR": 260000,
        "Health": "At risk",
        "Jira link": "https://jira.example.com/browse/FAM-4"
      },
      "description": "Notifications and insights is the epic for telling guardians what their children spend: a push message within seconds of a card payment, per-guardian preferences, and a weekly view of where the family's money goes. Priya Natarajan opened it on 12 August; both parts are fed by the card transaction event stream that Core Backend builds.\n\nReal-time notifications are part of the staff pilot, insights follow in the public launch. The notification copy was finished on 7 October, but the push story cannot start until the event stream ships and until somebody owns the child app's certificates and push keys, a task that was only discovered in a comment thread on 1 October and still has no assignee.\n\nHealth is At risk because the event stream was carried over from Sprint 3 and three teams now wait on it.\n\nhttps://jira.example.com/browse/FAM-4",
      "size": 3,
      "position": {
        "x": 16.936000000000014,
        "y": -20.917999999999946,
        "z": 2.842170943040401e-14
      }
    },
    {
      "ID": "FAM-5",
      "name": "Launch readiness",
      "type": "Epic",
      "properties": {
        "Key": "FAM-5",
        "Status": "In Progress",
        "Priority": "High",
        "Team": "Product",
        "Assignee": "Priya Natarajan",
        "Created": "2026-08-12T11:00:00",
        "Start": "2026-09-28T09:00:00",
        "Due date": "2026-11-06",
        "Timeline date": "2026-09-28T09:00:00",
        "Progress": "7%",
        "Business value": 8,
        "Time criticality": 20,
        "Risk reduction": 20,
        "Job size": 8,
        "WSJF score": 6,
        "Approved budget EUR": 240000,
        "Health": "At risk",
        "Jira link": "https://jira.example.com/browse/FAM-5"
      },
      "description": "Launch readiness is the epic for what must be true before staff families can use the product: the privacy notice and data protection impact assessment, a penetration test, data retention rules, an end-to-end regression suite, monitoring, a load test, the staff feature flag and finally the go/no-go decision. Priya Natarajan opened it on 12 August so that sign-offs are planned as work items instead of surprises in the last week.\n\nAlmost every chain in the project ends here. The feature flag was done on 8 October, but the privacy sign-off is flagged until retention rules and a consent-log fix land in Sprint 5, the regression suite can only run once five stories from three teams are done, and the load test is planned after the go/no-go meeting itself.\n\nHealth is At risk: the 4 November decision will be taken with gaps or written waivers unless Sprint 5 goes well.\n\nhttps://jira.example.com/browse/FAM-5",
      "size": 3,
      "position": {
        "x": 16.936000000000014,
        "y": -27.442999999999927,
        "z": 0
      }
    },
    {
      "ID": "FAM-6",
      "name": "Family group creation",
      "type": "Feature",
      "properties": {
        "Key": "FAM-6",
        "Status": "Done",
        "Resolution": "Done",
        "Priority": "Medium",
        "Team": "Product",
        "Assignee": "Priya Natarajan",
        "Fix version": "0.9 Foundations",
        "Created": "2026-08-14T10:00:00",
        "Start": "2026-08-31T10:00:00",
        "Resolved": "2026-10-09T17:10:00",
        "Due date": "2026-10-09",
        "Timeline date": "2026-08-31T10:00:00",
        "Progress": "100%",
        "Jira link": "https://jira.example.com/browse/FAM-6"
      },
      "description": "Family group creation is the feature that lets a guardian create a family group, give it a name and invite a second guardian by link. It came first because every other part of Family Wallet hangs off the family group, so it was the core of release 0.9 Foundations.\n\nDesign and the backend API were finished in Sprint 1 and unblocked the mobile setup screens. In Sprint 2 a tester's joint funding account broke group creation, which became the bug Family group API rejects guardians with joint accounts; the fix on 21 September released the app screen the same day. The co-guardian invite slipped into Sprint 3 and then unblocked the web settings page, which closed on 8 October. The feature was done on 9 October and shipped in 0.9 Foundations behind the staff feature flag.\n\nhttps://jira.example.com/browse/FAM-6",
      "size": 2.5,
      "position": {
        "x": 31.129,
        "y": -45.56564032214009,
        "z": 0
      }
    },
    {
      "ID": "FAM-7",
      "name": "Child onboarding and parental consent",
      "type": "Feature",
      "properties": {
        "Key": "FAM-7",
        "Status": "In Progress",
        "Resolution": "",
        "Priority": "High",
        "Team": "Product",
        "Assignee": "Priya Natarajan",
        "Fix version": "1.0 Staff Pilot",
        "Created": "2026-08-14T10:15:00",
        "Start": "2026-09-15T10:00:00",
        "Resolved": "",
        "Due date": "2026-11-06",
        "Timeline date": "2026-09-15T10:00:00",
        "Progress": "68%",
        "Jira link": "https://jira.example.com/browse/FAM-7"
      },
      "description": "Child onboarding and parental consent is the feature for adding a child profile with consent that is valid for the child's age and stored as an auditable record. It exists because a bank may only open a wallet for a minor with a guardian's lawful consent, and from 13 years the child must confirm too.\n\nIt is a chain across three teams. Security and Compliance first set the wording and age rules, which let Core Backend build the consent API, which in turn let Mobile build the add-child flow; that flow was flagged for a week while it waited for the API and closed on 14 October. Two loose ends remain for release 1.0 Staff Pilot: a consent screen that is cut off on small Android phones, and the child app PIN sign-in, which cannot be tested on a phone until the child app gets its own certificates.\n\nhttps://jira.example.com/browse/FAM-7",
      "size": 2.5,
      "position": {
        "x": 53.38099999999999,
        "y": -73.7150000000001,
        "z": 0
      }
    },
    {
      "ID": "FAM-8",
      "name": "Guardian identity verification",
      "type": "Feature",
      "properties": {
        "Key": "FAM-8",
        "Status": "In Progress",
        "Resolution": "",
        "Priority": "High",
        "Team": "Product",
        "Assignee": "Priya Natarajan",
        "Fix version": "1.0 Staff Pilot",
        "Created": "2026-08-14T10:30:00",
        "Start": "2026-10-01T09:00:00",
        "Resolved": "",
        "Due date": "2026-11-06",
        "Timeline date": "2026-10-01T09:00:00",
        "Progress": "40%",
        "Jira link": "https://jira.example.com/browse/FAM-8"
      },
      "description": "Guardian identity verification is the feature where guardians prove who they are by photographing an ID document, checked by an external verification provider, with failed checks going to a manual review queue in the back office. Know-your-customer rules require it before a guardian can fund a child's wallet.\n\nThe server integration was done on 8 October and unblocked both the mobile capture screen and the web review queue. The capture screen then hit a wall: the provider releases sandbox keys only after a signed data processing agreement, and two clauses about storing ID images outside the EU are still being negotiated. Until that agreement lands, expected around 21 October, the capture screen stays flagged and the pilot regression cannot cover ID checks.\n\nhttps://jira.example.com/browse/FAM-8",
      "size": 2.5,
      "position": {
        "x": 81.52799999999999,
        "y": -10.579,
        "z": 0
      }
    },
    {
      "ID": "FAM-9",
      "name": "Shared wallet and ledger",
      "type": "Feature",
      "properties": {
        "Key": "FAM-9",
        "Status": "In Progress",
        "Resolution": "",
        "Priority": "High",
        "Team": "Product",
        "Assignee": "Priya Natarajan",
        "Fix version": "1.0 Staff Pilot",
        "Created": "2026-08-17T10:00:00",
        "Start": "2026-09-14T09:30:00",
        "Resolved": "",
        "Due date": "2026-11-06",
        "Timeline date": "2026-09-14T09:30:00",
        "Progress": "54%",
        "Jira link": "https://jira.example.com/browse/FAM-9"
      },
      "description": "Shared wallet and ledger is the feature that gives each child a sub-ledger under the guardian's account, with instant top-ups, balances on mobile and web, and a nightly reconciliation. It is the base that allowances, limits and notifications all build on.\n\nIt was the project's early bottleneck and it cleared: the sub-ledger story finished on 24 September and released top-up, reconciliation and the allowance API; top-up finished on 5 October and released the child wallet home screen and the web overview, both picked up on 13 October. The sub-ledger and top-up shipped in 0.9 Foundations; the screens and the reconciliation job are planned for 1.0 Staff Pilot.\n\nhttps://jira.example.com/browse/FAM-9",
      "size": 2.5,
      "position": {
        "x": 56.12899999999999,
        "y": -43.31564032214009,
        "z": 0
      }
    },
    {
      "ID": "FAM-10",
      "name": "Scheduled allowances",
      "type": "Feature",
      "properties": {
        "Key": "FAM-10",
        "Status": "In Progress",
        "Resolution": "",
        "Priority": "High",
        "Team": "Product",
        "Assignee": "Priya Natarajan",
        "Fix version": "1.0 Staff Pilot",
        "Created": "2026-08-17T10:15:00",
        "Start": "2026-09-28T10:30:00",
        "Resolved": "",
        "Due date": "2026-11-06",
        "Timeline date": "2026-09-28T10:30:00",
        "Progress": "50%",
        "Jira link": "https://jira.example.com/browse/FAM-10"
      },
      "description": "Scheduled allowances is the feature that pays weekly or monthly pocket money automatically at 06:00 in the family's local time. Families asked for it more than anything else, so it is part of the staff pilot.\n\nDesign came first and settled when a change takes effect. The allowance API followed, and in its comment thread the team decided to store run times in UTC together with the family timezone. That decision led to the bug Allowance paid twice when clocks change: when the clocks go back, the allowance is paid twice. The bug was fixed, reopened by QA on 14 October because a catch-up job still pays a second time, and now blocks the set-allowance screen and the pilot go/no-go. A duplicate report on 15 October showed that the reconciliation test data sees the same problem.\n\nhttps://jira.example.com/browse/FAM-10",
      "size": 2.5,
      "position": {
        "x": 80.874,
        "y": -44.6146403221401,
        "z": 0
      }
    },
    {
      "ID": "FAM-11",
      "name": "Spending limits and merchant blocks",
      "type": "Feature",
      "properties": {
        "Key": "FAM-11",
        "Status": "To Do",
        "Resolution": "",
        "Priority": "Medium",
        "Team": "Product",
        "Assignee": "Priya Natarajan",
        "Fix version": "1.1 Public Launch",
        "Created": "2026-08-17T10:30:00",
        "Start": "",
        "Resolved": "",
        "Due date": "2026-11-27",
        "Timeline date": "2026-11-21T09:00:00",
        "Progress": "0%",
        "Jira link": "https://jira.example.com/browse/FAM-11"
      },
      "description": "Spending limits and merchant blocks is the feature that lets guardians set daily limits and switch off merchant categories such as gambling or in-game purchases, enforced by a rules engine that also uses a risk score. It is planned for 1.1 Public Launch because the pilot can run without it, but public customers expect it.\n\nNothing in it has started. The whole chain waits on the card event stream: the risk score needs live events, the limits engine needs the risk score, and the mobile and web limit screens need the engine. The merchant category mapping table is a late blocker, planned for Sprint 6 while the mobile screen that needs it is planned for Sprint 5, so the teams agreed in comments to work against a stub list first.\n\nhttps://jira.example.com/browse/FAM-11",
      "size": 2.5,
      "position": {
        "x": 110.629,
        "y": -35.111989548914295,
        "z": 0
      }
    },
    {
      "ID": "FAM-12",
      "name": "Real-time spend notifications",
      "type": "Feature",
      "properties": {
        "Key": "FAM-12",
        "Status": "In Progress",
        "Resolution": "",
        "Priority": "High",
        "Team": "Product",
        "Assignee": "Priya Natarajan",
        "Fix version": "1.0 Staff Pilot",
        "Created": "2026-08-18T10:00:00",
        "Start": "2026-10-05T10:00:00",
        "Resolved": "",
        "Due date": "2026-11-06",
        "Timeline date": "2026-10-05T10:00:00",
        "Progress": "13%",
        "Jira link": "https://jira.example.com/browse/FAM-12"
      },
      "description": "Real-time spend notifications is the feature that sends each guardian a push message within seconds of a child's card payment, with per-guardian preferences for what they want to hear about. It is a headline of the staff pilot: parents see what happens as it happens.\n\nIt depends on three teams. Design finished the message copy and its privacy rule on 7 October. Core Backend's card transaction event stream is late and carried over into Sprint 4. And the child app needs its own app ID, signing certificates and push keys, a task Platform/DevOps only filed on 2 October after Mobile asked who owned the push key; it still has no owner and no sprint. Until both land, the push story and the web preferences page cannot be finished, and the pilot regression cannot cover push.\n\nhttps://jira.example.com/browse/FAM-12",
      "size": 2.5,
      "position": {
        "x": 79.29100000000001,
        "y": -23.431999999999945,
        "z": 1.4210854715202004e-14
      }
    },
    {
      "ID": "FAM-13",
      "name": "Spending insights",
      "type": "Feature",
      "properties": {
        "Key": "FAM-13",
        "Status": "To Do",
        "Resolution": "",
        "Priority": "Medium",
        "Team": "Product",
        "Assignee": "Priya Natarajan",
        "Fix version": "1.1 Public Launch",
        "Created": "2026-08-18T10:15:00",
        "Start": "",
        "Resolved": "",
        "Due date": "2026-11-27",
        "Timeline date": "2026-11-21T09:00:00",
        "Progress": "0%",
        "Jira link": "https://jira.example.com/browse/FAM-13"
      },
      "description": "Spending insights is the feature that sorts child card payments into categories and shows guardians where the money goes, in the app and in a weekly summary email. It is planned for 1.1 Public Launch.\n\nIt sits at the end of the event-stream chain: the spending categories model cannot be trained without live card events, and the in-app insights screen needs both that model and the dashboard design. The weekly email reuses the same categories. All of it is still To Do in Sprints 5 and 6, so any further delay of the event stream moves the public launch scope.\n\nhttps://jira.example.com/browse/FAM-13",
      "size": 2.5,
      "position": {
        "x": 139.80399999999997,
        "y": -37.61298954891429,
        "z": 1.4210854715202004e-14
      }
    },
    {
      "ID": "FAM-14",
      "name": "Regulatory and privacy sign-off",
      "type": "Feature",
      "properties": {
        "Key": "FAM-14",
        "Status": "In Progress",
        "Resolution": "",
        "Priority": "High",
        "Team": "Product",
        "Assignee": "Priya Natarajan",
        "Fix version": "1.0 Staff Pilot",
        "Created": "2026-08-19T10:00:00",
        "Start": "2026-10-12T10:00:00",
        "Resolved": "",
        "Due date": "2026-11-06",
        "Timeline date": "2026-10-12T10:00:00",
        "Progress": "0%",
        "Jira link": "https://jira.example.com/browse/FAM-14"
      },
      "description": "Regulatory and privacy sign-off is the feature that collects everything the regulator and the bank's privacy office need before children's data is processed: the privacy notice, the data protection impact assessment, data retention rules for minors and a penetration test.\n\nThe privacy notice and impact assessment reached review on 14 October and were flagged the same day, because the notice must state how long children's data is kept and the consent log must record the device each consent came from. Both gaps are planned only for Sprint 5, so sign-off moved there too. Together with the pen test booked for 27 to 30 October, this feature decides whether the pilot can start on 6 November.\n\nhttps://jira.example.com/browse/FAM-14",
      "size": 2.5,
      "position": {
        "x": 103.93799999999999,
        "y": -7.278,
        "z": 0
      }
    },
    {
      "ID": "FAM-15",
      "name": "Rollout and observability",
      "type": "Feature",
      "properties": {
        "Key": "FAM-15",
        "Status": "In Progress",
        "Resolution": "",
        "Priority": "High",
        "Team": "Product",
        "Assignee": "Priya Natarajan",
        "Fix version": "1.0 Staff Pilot",
        "Created": "2026-08-19T10:15:00",
        "Start": "2026-10-06T10:00:00",
        "Resolved": "",
        "Due date": "2026-11-06",
        "Timeline date": "2026-10-06T10:00:00",
        "Progress": "14%",
        "Jira link": "https://jira.example.com/browse/FAM-15"
      },
      "description": "Rollout and observability is the feature for running the staff pilot safely: a feature flag that limits Family Wallet to staff, monitoring with alerts, an end-to-end regression suite on real devices, a load test, and the go/no-go meeting on 4 November.\n\nThe feature flag was done on 8 October and shipped with 0.9 Foundations. Everything else is planned for Sprint 5 or later and depends on other teams: the regression suite needs five stories from Mobile, and the go/no-go collects every open risk in the project, from the reopened allowance bug to the unsigned provider agreement. The load test is planned for Sprint 6, after the decision it is meant to inform.\n\nhttps://jira.example.com/browse/FAM-15",
      "size": 2.5,
      "position": {
        "x": 90.406,
        "y": -24.031999999999947,
        "z": 0
      }
    },
    {
      "ID": "FAM-16",
      "name": "Family group data model and API",
      "type": "Story",
      "properties": {
        "Key": "FAM-16",
        "Status": "Done",
        "Resolution": "Done",
        "Priority": "High",
        "Story points": 5,
        "Team": "Core Backend",
        "Sprint": "Sprint 1",
        "Sprints carried": "",
        "Assignee": "Jonas Weber",
        "Reporter": "Priya Natarajan",
        "Component": "Family API",
        "Labels": "family-group",
        "Fix version": "0.9 Foundations",
        "Affects version": "",
        "Created": "2026-08-24T10:05:00",
        "Start": "2026-08-31T10:00:00",
        "Resolved": "2026-09-10T16:30:00",
        "Reopened": "",
        "Due date": "",
        "Timeline date": "2026-08-31T10:00:00",
        "Flagged": false,
        "Flagged since": "",
        "Open blockers": 0,
        "Blocked by other team": false,
        "Late blocker": false,
        "Severity": "",
        "Estimate h": 20,
        "Spent h": 28,
        "Remaining h": 0,
        "Comments": 0,
        "Jira link": "https://jira.example.com/browse/FAM-16"
      },
      "description": "Family group data model and API is the backend story that defines what a family group is: one or two guardians, up to six children, and the guardian account that funds the wallets. Priya Natarajan wrote it on 24 August as the first building block of Family Wallet, and Jonas Weber of Core Backend built it in Sprint 1, finishing on 10 September.\n\nIts completion, together with the setup design, unblocked the mobile Create family group screen. It also carried a hidden assumption: the API accepted only single-owner funding accounts. When Mobile tested with a joint account in Sprint 2 this caused the bug Family group API rejects guardians with joint accounts, which had to be fixed before the screen could be finished.\n\nhttps://jira.example.com/browse/FAM-16",
      "size": 1.95,
      "position": {
        "x": 32.12899999999999,
        "y": -51.315640322140084,
        "z": 0
      }
    },
    {
      "ID": "FAM-17",
      "name": "Design family setup flow",
      "type": "Story",
      "properties": {
        "Key": "FAM-17",
        "Status": "Done",
        "Resolution": "Done",
        "Priority": "Medium",
        "Story points": 3,
        "Team": "Design/UX",
        "Sprint": "Sprint 1",
        "Sprints carried": "",
        "Assignee": "Sofia Marino",
        "Reporter": "Priya Natarajan",
        "Component": "Design",
        "Labels": "design, family-group",
        "Fix version": "0.9 Foundations",
        "Affects version": "",
        "Created": "2026-08-24T10:20:00",
        "Start": "2026-08-31T11:00:00",
        "Resolved": "2026-09-04T15:00:00",
        "Reopened": "",
        "Due date": "",
        "Timeline date": "2026-08-31T11:00:00",
        "Flagged": false,
        "Flagged since": "",
        "Open blockers": 0,
        "Blocked by other team": false,
        "Late blocker": false,
        "Severity": "",
        "Estimate h": 12,
        "Spent h": 11,
        "Remaining h": 0,
        "Comments": 2,
        "Jira link": "https://jira.example.com/browse/FAM-17"
      },
      "description": "Design family setup flow is the design story for the four steps a new family goes through: guardian details, family name, an optional co-guardian invite, and a confirmation. Sofia Marino of Design/UX did it in Sprint 1 because both the mobile and the web teams needed one agreed flow before building.\n\nShe attached the wireframes on 3 September. Mobile asked whether the invite could be skipped, and the design was settled so that it can be finished later from family settings. The story was done on 4 September and unblocked two teams: Mobile's Create family group screen and Web's family settings page.\n\nhttps://jira.example.com/browse/FAM-17",
      "size": 1.56,
      "position": {
        "x": 31.298999999999992,
        "y": -100.64900000000097,
        "z": 0
      },
      "images": ["07b84ecc-73ea-463e-b409-de9ab3ef8d3b"]
    },
    {
      "ID": "FAM-18",
      "name": "Sub-ledger per child in core ledger",
      "type": "Story",
      "properties": {
        "Key": "FAM-18",
        "Status": "Done",
        "Resolution": "Done",
        "Priority": "High",
        "Story points": 8,
        "Team": "Core Backend",
        "Sprint": "Sprint 2",
        "Sprints carried": "",
        "Assignee": "Jonas Weber",
        "Reporter": "Priya Natarajan",
        "Component": "Ledger",
        "Labels": "ledger",
        "Fix version": "0.9 Foundations",
        "Affects version": "",
        "Created": "2026-08-25T10:00:00",
        "Start": "2026-09-14T09:30:00",
        "Resolved": "2026-09-24T11:00:00",
        "Reopened": "",
        "Due date": "",
        "Timeline date": "2026-09-14T09:30:00",
        "Flagged": false,
        "Flagged since": "",
        "Open blockers": 0,
        "Blocked by other team": false,
        "Late blocker": false,
        "Severity": "",
        "Estimate h": 32,
        "Spent h": 38.5,
        "Remaining h": 0,
        "Comments": 1,
        "Jira link": "https://jira.example.com/browse/FAM-18"
      },
      "description": "Sub-ledger per child in core ledger is the backend story that gives each child a sub-ledger under the guardian's account, with child balances rolling up to the parent account. Jonas Weber built it in Sprint 2, finishing on 24 September after a schema migration and a balance query endpoint.\n\nIt was the project's first bottleneck: three items waited for it, top-up from the guardian account, the nightly reconciliation job and the allowance schedule API. Priya announced on 24 September that the way was clear, and the chain moved on quickly. It shipped in 0.9 Foundations and is the counterpart of the event stream, a bottleneck that is still open.\n\nhttps://jira.example.com/browse/FAM-18",
      "size": 2.4,
      "position": {
        "x": 56.12899999999999,
        "y": -51.315640322140084,
        "z": 0
      }
    },
    {
      "ID": "FAM-19",
      "name": "Top up child wallet from guardian account",
      "type": "Story",
      "properties": {
        "Key": "FAM-19",
        "Status": "Done",
        "Resolution": "Done",
        "Priority": "High",
        "Story points": 5,
        "Team": "Core Backend",
        "Sprint": "Sprint 3",
        "Sprints carried": "",
        "Assignee": "Amara Okafor",
        "Reporter": "Priya Natarajan",
        "Component": "Ledger",
        "Labels": "ledger",
        "Fix version": "0.9 Foundations",
        "Affects version": "",
        "Created": "2026-08-26T10:00:00",
        "Start": "2026-09-28T09:30:00",
        "Resolved": "2026-10-05T15:00:00",
        "Reopened": "",
        "Due date": "",
        "Timeline date": "2026-09-28T09:30:00",
        "Flagged": false,
        "Flagged since": "",
        "Open blockers": 0,
        "Blocked by other team": false,
        "Late blocker": false,
        "Severity": "",
        "Estimate h": 20,
        "Spent h": 26,
        "Remaining h": 0,
        "Comments": 0,
        "Jira link": "https://jira.example.com/browse/FAM-19"
      },
      "description": "Top up child wallet from guardian account is the backend story that moves money instantly from the guardian into a child's wallet, with reversals within 24 hours going back to the guardian. Amara Okafor started it on 28 September, once the sub-ledger existed, and finished on 5 October.\n\nIt shipped in 0.9 Foundations and unblocked the two balance screens: the child wallet home screen on mobile and the wallet overview on web, both started on 13 October.\n\nhttps://jira.example.com/browse/FAM-19",
      "size": 1.95,
      "position": {
        "x": 89.494,
        "y": -46.11564032214009,
        "z": 0
      }
    },
    {
      "ID": "FAM-20",
      "name": "Create family group screen",
      "type": "Story",
      "properties": {
        "Key": "FAM-20",
        "Status": "Done",
        "Resolution": "Done",
        "Priority": "High",
        "Story points": 5,
        "Team": "Mobile",
        "Sprint": "Sprint 2",
        "Sprints carried": "",
        "Assignee": "Lucía Ferrer",
        "Reporter": "Priya Natarajan",
        "Component": "Mobile app",
        "Labels": "family-group",
        "Fix version": "0.9 Foundations",
        "Affects version": "",
        "Created": "2026-08-26T11:00:00",
        "Start": "2026-09-14T10:00:00",
        "Resolved": "2026-09-24T15:20:00",
        "Reopened": "",
        "Due date": "",
        "Timeline date": "2026-09-14T10:00:00",
        "Flagged": false,
        "Flagged since": "",
        "Open blockers": 0,
        "Blocked by other team": false,
        "Late blocker": false,
        "Severity": "",
        "Estimate h": 20,
        "Spent h": 28,
        "Remaining h": 0,
        "Comments": 3,
        "Jira link": "https://jira.example.com/browse/FAM-20"
      },
      "description": "Create family group screen is the mobile story for the guardian's in-app setup screens, built by Lucía Ferrer of Mobile in Sprint 2 on top of the family group API and the setup design. Both blockers were done before the sprint started, so work began on 14 September.\n\nTwo days later Lucía's test guardian with a joint account could not create a group. She filed a bug against Core Backend, Family group API rejects guardians with joint accounts, and flagged this story on 16 September. The backend fix landed on 21 September; she removed the flag the same afternoon, noting build 0.4.2, and the story was done on 24 September as part of release 0.9 Foundations.\n\nhttps://jira.example.com/browse/FAM-20",
      "size": 1.95,
      "position": {
        "x": 58.29899999999999,
        "y": -70.7370000000001,
        "z": 0
      },
      "images": ["d49f61e3-cb1b-48e4-98b5-04fc04d2f92c"]
    },
    {
      "ID": "FAM-21",
      "name": "Invite co-guardian by link",
      "type": "Story",
      "properties": {
        "Key": "FAM-21",
        "Status": "Done",
        "Resolution": "Done",
        "Priority": "Medium",
        "Story points": 3,
        "Team": "Core Backend",
        "Sprint": "Sprint 3",
        "Sprints carried": "Sprint 2 > Sprint 3",
        "Assignee": "Jonas Weber",
        "Reporter": "Priya Natarajan",
        "Component": "Family API",
        "Labels": "family-group",
        "Fix version": "0.9 Foundations",
        "Affects version": "",
        "Created": "2026-08-26T11:20:00",
        "Start": "2026-09-21T10:00:00",
        "Resolved": "2026-09-30T12:00:00",
        "Reopened": "",
        "Due date": "",
        "Timeline date": "2026-09-21T10:00:00",
        "Flagged": false,
        "Flagged since": "",
        "Open blockers": 0,
        "Blocked by other team": false,
        "Late blocker": false,
        "Severity": "",
        "Estimate h": 12,
        "Spent h": 14.5,
        "Remaining h": 0,
        "Comments": 0,
        "Jira link": "https://jira.example.com/browse/FAM-21"
      },
      "description": "Invite co-guardian by link is the backend story that lets a guardian invite a second guardian with a link that expires after seven days; the co-guardian accepts after signing in and signing the family terms. It was planned for Sprint 2 but only started on 21 September and was carried over into Sprint 3, finishing on 30 September.\n\nIts completion unblocked the web family settings page, which needs the invite to show, resend or cancel a pending invitation. Web started that page the next morning.\n\nhttps://jira.example.com/browse/FAM-21",
      "size": 1.56,
      "position": {
        "x": 79.50399999999999,
        "y": -49.901640322140096,
        "z": 0
      }
    },
    {
      "ID": "FAM-22",
      "name": "Family settings page",
      "type": "Story",
      "properties": {
        "Key": "FAM-22",
        "Status": "Done",
        "Resolution": "Done",
        "Priority": "Medium",
        "Story points": 3,
        "Team": "Web",
        "Sprint": "Sprint 3",
        "Sprints carried": "",
        "Assignee": "Noah Fischer",
        "Reporter": "Priya Natarajan",
        "Component": "Web portal",
        "Labels": "family-group",
        "Fix version": "0.9 Foundations",
        "Affects version": "",
        "Created": "2026-08-27T10:00:00",
        "Start": "2026-10-01T09:30:00",
        "Resolved": "2026-10-08T14:10:00",
        "Reopened": "",
        "Due date": "",
        "Timeline date": "2026-10-01T09:30:00",
        "Flagged": false,
        "Flagged since": "",
        "Open blockers": 0,
        "Blocked by other team": false,
        "Late blocker": false,
        "Severity": "",
        "Estimate h": 12,
        "Spent h": 17,
        "Remaining h": 0,
        "Comments": 0,
        "Jira link": "https://jira.example.com/browse/FAM-22"
      },
      "description": "Family settings page is the web story where guardians rename the family, see its members and resend or cancel a pending invite. Noah Fischer of Web built it in Sprint 3.\n\nIt waited on two other teams: the setup design from Design/UX, done early in September, and the co-guardian invite from Core Backend, which slipped into Sprint 3 and was done on 30 September. Noah started on 1 October, the day after the last blocker cleared, and finished on 8 October in time for release 0.9 Foundations, completing the family group feature.\n\nhttps://jira.example.com/browse/FAM-22",
      "size": 1.56,
      "position": {
        "x": 86.154,
        "y": -115.48599999999918,
        "z": 0
      },
      "images": ["9c3f11bb-ea19-431e-a88e-acd059fd8d6c"]
    },
    {
      "ID": "FAM-23",
      "name": "Parental consent wording and age rules",
      "type": "Story",
      "properties": {
        "Key": "FAM-23",
        "Status": "Done",
        "Resolution": "Done",
        "Priority": "High",
        "Story points": 2,
        "Team": "Security & Compliance",
        "Sprint": "Sprint 2",
        "Sprints carried": "",
        "Assignee": "Ines Duarte",
        "Reporter": "Priya Natarajan",
        "Component": "Compliance",
        "Labels": "consent, legal",
        "Fix version": "1.0 Staff Pilot",
        "Affects version": "",
        "Created": "2026-08-27T10:30:00",
        "Start": "2026-09-15T10:00:00",
        "Resolved": "2026-09-22T11:00:00",
        "Reopened": "",
        "Due date": "",
        "Timeline date": "2026-09-15T10:00:00",
        "Flagged": false,
        "Flagged since": "",
        "Open blockers": 0,
        "Blocked by other team": false,
        "Late blocker": false,
        "Severity": "",
        "Estimate h": 8,
        "Spent h": 8,
        "Remaining h": 0,
        "Comments": 2,
        "Jira link": "https://jira.example.com/browse/FAM-23"
      },
      "description": "Parental consent wording and age rules is the legal story that sets what a guardian agrees to and how age changes it: under 13 the guardian consents for the child, from 13 to 17 the child also confirms in the app. Ines Duarte, privacy counsel in Security and Compliance, wrote the rules in Sprint 2, and design noted that teenagers therefore need one extra confirmation screen.\n\nIt was done on 22 September and was the first step in the consent chain to the pilot: it unblocked the consent capture API in Core Backend, which in turn unblocked the add-child flow in Mobile.\n\nhttps://jira.example.com/browse/FAM-23",
      "size": 1.32,
      "position": {
        "x": 54.189,
        "y": -10.8,
        "z": 0
      }
    },
    {
      "ID": "FAM-24",
      "name": "Child wallet home screen",
      "type": "Story",
      "properties": {
        "Key": "FAM-24",
        "Status": "In Review",
        "Resolution": "",
        "Priority": "Medium",
        "Story points": 5,
        "Team": "Mobile",
        "Sprint": "Sprint 4",
        "Sprints carried": "",
        "Assignee": "Kenji Sato",
        "Reporter": "Priya Natarajan",
        "Component": "Child app",
        "Labels": "ledger, child-app",
        "Fix version": "1.0 Staff Pilot",
        "Affects version": "",
        "Created": "2026-08-27T11:00:00",
        "Start": "2026-10-13T10:00:00",
        "Resolved": "",
        "Reopened": "",
        "Due date": "",
        "Timeline date": "2026-10-13T10:00:00",
        "Flagged": false,
        "Flagged since": "",
        "Open blockers": 0,
        "Blocked by other team": false,
        "Late blocker": false,
        "Severity": "",
        "Estimate h": 20,
        "Spent h": 14,
        "Remaining h": 6,
        "Comments": 1,
        "Jira link": "https://jira.example.com/browse/FAM-24"
      },
      "description": "Child wallet home screen is the mobile story for the child's home screen: balance, next allowance and the last five transactions. It needed the top-up story, done on 5 October.\n\nKenji Sato picked it up on 13 October while his ID capture story was flagged, which kept him productive instead of idle. It went into review on 15 October. Once done, it is one of the flows the end-to-end regression suite covers before the pilot.\n\nhttps://jira.example.com/browse/FAM-24",
      "size": 1.95,
      "position": {
        "x": 109.20300000000003,
        "y": -78.53700000000009,
        "z": 0
      },
      "images": ["78571a2c-1761-46d4-83b4-c466883788ca"]
    },
    {
      "ID": "FAM-25",
      "name": "Wallet overview on web",
      "type": "Story",
      "properties": {
        "Key": "FAM-25",
        "Status": "In Progress",
        "Resolution": "",
        "Priority": "Medium",
        "Story points": 3,
        "Team": "Web",
        "Sprint": "Sprint 4",
        "Sprints carried": "",
        "Assignee": "Noah Fischer",
        "Reporter": "Priya Natarajan",
        "Component": "Web portal",
        "Labels": "ledger",
        "Fix version": "1.0 Staff Pilot",
        "Affects version": "",
        "Created": "2026-08-27T11:20:00",
        "Start": "2026-10-13T09:30:00",
        "Resolved": "",
        "Reopened": "",
        "Due date": "",
        "Timeline date": "2026-10-13T09:30:00",
        "Flagged": false,
        "Flagged since": "",
        "Open blockers": 0,
        "Blocked by other team": false,
        "Late blocker": false,
        "Severity": "",
        "Estimate h": 12,
        "Spent h": 6,
        "Remaining h": 6,
        "Comments": 0,
        "Jira link": "https://jira.example.com/browse/FAM-25"
      },
      "description": "Wallet overview on web is the web story listing every child's balance and recent transactions for the guardian. It needed the top-up story from Core Backend, done on 5 October.\n\nNoah Fischer started it on 13 October in Sprint 4 and it is in progress for release 1.0 Staff Pilot, so that guardians who prefer online banking see the same figures as in the app.\n\nhttps://jira.example.com/browse/FAM-25",
      "size": 1.56,
      "position": {
        "x": 111.81799999999998,
        "y": -115.48599999999918,
        "z": 0
      },
      "images": ["bd01174f-99a2-485b-bd66-46fad12cb416"]
    },
    {
      "ID": "FAM-26",
      "name": "Consent capture API with audit trail",
      "type": "Story",
      "properties": {
        "Key": "FAM-26",
        "Status": "Done",
        "Resolution": "Done",
        "Priority": "High",
        "Story points": 5,
        "Team": "Core Backend",
        "Sprint": "Sprint 3",
        "Sprints carried": "",
        "Assignee": "Jonas Weber",
        "Reporter": "Priya Natarajan",
        "Component": "Family API",
        "Labels": "consent",
        "Fix version": "1.0 Staff Pilot",
        "Affects version": "",
        "Created": "2026-08-28T10:00:00",
        "Start": "2026-09-28T10:00:00",
        "Resolved": "2026-10-06T10:30:00",
        "Reopened": "",
        "Due date": "",
        "Timeline date": "2026-09-28T10:00:00",
        "Flagged": false,
        "Flagged since": "",
        "Open blockers": 0,
        "Blocked by other team": false,
        "Late blocker": false,
        "Severity": "",
        "Estimate h": 20,
        "Spent h": 24,
        "Remaining h": 0,
        "Comments": 3,
        "Jira link": "https://jira.example.com/browse/FAM-26"
      },
      "description": "Consent capture API with audit trail is the backend story that stores each consent with who consented, the wording version, the time, the channel and the device, and writes an audit entry for every change. Jonas Weber built it in Sprint 3 after the consent rules were settled on 22 September.\n\nIn its comment thread Ines Duarte asked for the device ID so the bank can prove which device a consent came from, and Jonas added it to the schema. The story was done on 6 October and unblocked the Add child profile flow, which had been flagged waiting for it. The device ID, however, was never actually filled: on 13 October the impact assessment review found empty device IDs, filed as the bug Consent audit log misses device ID, which now blocks the privacy sign-off.\n\nhttps://jira.example.com/browse/FAM-26",
      "size": 1.95,
      "position": {
        "x": 81.98400000000001,
        "y": -56.56564032214008,
        "z": 0
      }
    },
    {
      "ID": "FAM-27",
      "name": "Add child profile flow",
      "type": "Story",
      "properties": {
        "Key": "FAM-27",
        "Status": "Done",
        "Resolution": "Done",
        "Priority": "High",
        "Story points": 8,
        "Team": "Mobile",
        "Sprint": "Sprint 4",
        "Sprints carried": "Sprint 3 > Sprint 4",
        "Assignee": "Kenji Sato",
        "Reporter": "Priya Natarajan",
        "Component": "Mobile app",
        "Labels": "consent, onboarding",
        "Fix version": "1.0 Staff Pilot",
        "Affects version": "",
        "Created": "2026-08-28T10:20:00",
        "Start": "2026-09-28T11:00:00",
        "Resolved": "2026-10-14T11:15:00",
        "Reopened": "",
        "Due date": "",
        "Timeline date": "2026-09-28T11:00:00",
        "Flagged": false,
        "Flagged since": "",
        "Open blockers": 0,
        "Blocked by other team": false,
        "Late blocker": false,
        "Severity": "",
        "Estimate h": 32,
        "Spent h": 45,
        "Remaining h": 0,
        "Comments": 4,
        "Jira link": "https://jira.example.com/browse/FAM-27"
      },
      "description": "Add child profile flow is the mobile story where a guardian adds a child with name, date of birth and avatar and then gives consent, while teenagers confirm on their own phone. Kenji Sato of Mobile started it on 28 September.\n\nTwo days later he flagged it because the consent API was not ready, so the flow could not save anything; Core Backend promised it for 6 October and delivered that day, and Kenji removed the flag the same morning. The story was carried over into Sprint 4 with only the teen confirmation screen left and was done on 14 October. It feeds the end-to-end regression suite for the pilot. Testing it on a small phone caused the bug Consent screen cut off on small Android screens, where the consent text runs off the screen.\n\nhttps://jira.example.com/browse/FAM-27",
      "size": 2.4,
      "position": {
        "x": 105.81800000000001,
        "y": -70.7370000000001,
        "z": 0
      },
      "images": ["5b9185db-c90f-422d-a99a-230acb42bce1", "32f1afc5-368f-43f6-985c-3eca90c07e9e"]
    },
    {
      "ID": "FAM-28",
      "name": "Integrate ID verification provider",
      "type": "Story",
      "properties": {
        "Key": "FAM-28",
        "Status": "Done",
        "Resolution": "Done",
        "Priority": "High",
        "Story points": 8,
        "Team": "Core Backend",
        "Sprint": "Sprint 3",
        "Sprints carried": "",
        "Assignee": "Amara Okafor",
        "Reporter": "Priya Natarajan",
        "Component": "Family API",
        "Labels": "kyc",
        "Fix version": "1.0 Staff Pilot",
        "Affects version": "",
        "Created": "2026-08-28T11:00:00",
        "Start": "2026-10-01T09:00:00",
        "Resolved": "2026-10-08T17:00:00",
        "Reopened": "",
        "Due date": "",
        "Timeline date": "2026-10-01T09:00:00",
        "Flagged": false,
        "Flagged since": "",
        "Open blockers": 0,
        "Blocked by other team": false,
        "Late blocker": false,
        "Severity": "",
        "Estimate h": 32,
        "Spent h": 25.5,
        "Remaining h": 0,
        "Comments": 0,
        "Jira link": "https://jira.example.com/browse/FAM-28"
      },
      "description": "Integrate ID verification provider is the backend story that starts an identity check with the external provider, receives the result callback and stores the outcome on the guardian. Amara Okafor built it in Sprint 3 and finished on 8 October.\n\nIt unblocked two teams: Mobile's ID document capture screen, which sends the photo to the provider, and Web's manual review queue for checks that fail. Sending real documents to the provider's sandbox, however, needs keys that only come with the data processing agreement, the task Provider sandbox access and data processing agreement.\n\nhttps://jira.example.com/browse/FAM-28",
      "size": 2.4,
      "position": {
        "x": 87.96400000000003,
        "y": -56.96864032214007,
        "z": 0
      }
    },
    {
      "ID": "FAM-29",
      "name": "Privacy notice and impact assessment for children's data",
      "type": "Story",
      "properties": {
        "Key": "FAM-29",
        "Status": "In Review",
        "Resolution": "",
        "Priority": "High",
        "Story points": 3,
        "Team": "Security & Compliance",
        "Sprint": "Sprint 4",
        "Sprints carried": "",
        "Assignee": "Ines Duarte",
        "Reporter": "Priya Natarajan",
        "Component": "Compliance",
        "Labels": "legal, privacy, pilot-blocker",
        "Fix version": "1.0 Staff Pilot",
        "Affects version": "",
        "Created": "2026-09-01T10:00:00",
        "Start": "2026-10-12T10:00:00",
        "Resolved": "",
        "Reopened": "",
        "Due date": "2026-10-23",
        "Timeline date": "2026-10-12T10:00:00",
        "Flagged": true,
        "Flagged since": "2026-10-14T16:00:00",
        "Open blockers": 2,
        "Blocked by other team": true,
        "Late blocker": true,
        "Severity": "",
        "Estimate h": 12,
        "Spent h": 6,
        "Remaining h": 6,
        "Comments": 3,
        "Jira link": "https://jira.example.com/browse/FAM-29"
      },
      "description": "Privacy notice and impact assessment for children's data is the Security and Compliance story for the privacy notice shown to guardians and children and the data protection impact assessment the pilot needs before launch. Ines Duarte started it on 12 October and moved it into review on 14 October, due 23 October.\n\nThe same day she flagged it: the notice must say how long children's data is kept, which depends on the story Data retention rules for minors, and the consent log must hold the device ID, which the bug Consent audit log misses device ID shows it does not. Both are planned for Sprint 5, so sign-off moves to Sprint 5 as well. Its completion is a condition of the pilot go/no-go, and the pilot date holds only if both blockers land in the first week of Sprint 5.\n\nhttps://jira.example.com/browse/FAM-29",
      "size": 1.56,
      "position": {
        "x": 108.708,
        "y": -10.8,
        "z": 0
      }
    },
    {
      "ID": "FAM-31",
      "name": "Data retention rules for minors",
      "type": "Story",
      "properties": {
        "Key": "FAM-31",
        "Status": "To Do",
        "Resolution": "",
        "Priority": "High",
        "Story points": 3,
        "Team": "Data & Risk",
        "Sprint": "Sprint 5",
        "Sprints carried": "",
        "Assignee": "Hannah Kowalski",
        "Reporter": "Ines Duarte",
        "Component": "Analytics",
        "Labels": "privacy",
        "Fix version": "1.0 Staff Pilot",
        "Affects version": "",
        "Created": "2026-09-01T10:40:00",
        "Start": "",
        "Resolved": "",
        "Reopened": "",
        "Due date": "",
        "Timeline date": "2026-10-26T09:00:00",
        "Flagged": false,
        "Flagged since": "",
        "Open blockers": 0,
        "Blocked by other team": false,
        "Late blocker": false,
        "Severity": "",
        "Estimate h": 12,
        "Spent h": 0,
        "Remaining h": 12,
        "Comments": 0,
        "Jira link": "https://jira.example.com/browse/FAM-31"
      },
      "description": "Data retention rules for minors is the Data and Risk story that defines how long each kind of child data is kept and how it is deleted when a child leaves the family or turns 18. Ines Duarte asked for it; Hannah Kowalski owns it in Sprint 5.\n\nIt is a late blocker: the privacy notice, planned for Sprint 4, cannot be signed off without it. Hannah confirmed on 14 October that the rules are planned for Sprint 5, which moved the privacy sign-off with it.\n\nhttps://jira.example.com/browse/FAM-31",
      "size": 1.56,
      "position": {
        "x": 131.92399999999998,
        "y": -34.3729895489143,
        "z": 0
      }
    },
    {
      "ID": "FAM-32",
      "name": "ID document capture screen",
      "type": "Story",
      "properties": {
        "Key": "FAM-32",
        "Status": "In Progress",
        "Resolution": "",
        "Priority": "High",
        "Story points": 5,
        "Team": "Mobile",
        "Sprint": "Sprint 4",
        "Sprints carried": "",
        "Assignee": "Kenji Sato",
        "Reporter": "Priya Natarajan",
        "Component": "Mobile app",
        "Labels": "kyc",
        "Fix version": "1.0 Staff Pilot",
        "Affects version": "",
        "Created": "2026-09-02T10:00:00",
        "Start": "2026-10-12T11:00:00",
        "Resolved": "",
        "Reopened": "",
        "Due date": "",
        "Timeline date": "2026-10-12T11:00:00",
        "Flagged": true,
        "Flagged since": "2026-10-13T09:40:00",
        "Open blockers": 1,
        "Blocked by other team": true,
        "Late blocker": false,
        "Severity": "",
        "Estimate h": 20,
        "Spent h": 12,
        "Remaining h": 8,
        "Comments": 4,
        "Jira link": "https://jira.example.com/browse/FAM-32"
      },
      "description": "ID document capture screen is the mobile story where a guardian photographs an ID document, the edges are detected automatically and the image is sent to the verification provider. Kenji Sato started it on 12 October, after the provider integration was done.\n\nOn 13 October he flagged it: the upload step needs sandbox keys that the provider releases only after the data processing agreement is signed, expected around 21 October (task Provider sandbox access and data processing agreement). Kenji finished the camera part on 14 October and picked up the child wallet home screen meanwhile. Priya noted the risk on the pilot go/no-go. When unblocked, the story feeds the end-to-end regression suite.\n\nhttps://jira.example.com/browse/FAM-32",
      "size": 1.95,
      "position": {
        "x": 115.81800000000001,
        "y": -72.4870000000001,
        "z": 0
      },
      "images": ["036e29a5-1d5c-40cc-9f51-e711a3a9f893", "c5867bad-d434-435e-a1a2-2e97d2d3212f"]
    },
    {
      "ID": "FAM-33",
      "name": "Feature flag for staff pilot",
      "type": "Story",
      "properties": {
        "Key": "FAM-33",
        "Status": "Done",
        "Resolution": "Done",
        "Priority": "Medium",
        "Story points": 2,
        "Team": "Platform/DevOps",
        "Sprint": "Sprint 3",
        "Sprints carried": "",
        "Assignee": "Sam Adeyemi",
        "Reporter": "Priya Natarajan",
        "Component": "Infrastructure",
        "Labels": "rollout",
        "Fix version": "0.9 Foundations",
        "Affects version": "",
        "Created": "2026-09-02T11:00:00",
        "Start": "2026-10-06T10:00:00",
        "Resolved": "2026-10-08T11:30:00",
        "Reopened": "",
        "Due date": "",
        "Timeline date": "2026-10-06T10:00:00",
        "Flagged": false,
        "Flagged since": "",
        "Open blockers": 0,
        "Blocked by other team": false,
        "Late blocker": false,
        "Severity": "",
        "Estimate h": 8,
        "Spent h": 6.5,
        "Remaining h": 0,
        "Comments": 0,
        "Jira link": "https://jira.example.com/browse/FAM-33"
      },
      "description": "Feature flag for staff pilot is the Platform/DevOps story for a flag that shows Family Wallet only to staff accounts during the pilot. Sam Adeyemi built it in Sprint 3 and finished on 8 October, and it shipped with 0.9 Foundations.\n\nIt is one of the conditions of the go/no-go decision, and the only one already met.\n\nhttps://jira.example.com/browse/FAM-33",
      "size": 1.32,
      "position": {
        "x": 84.79100000000001,
        "y": -23.917999999999946,
        "z": 0
      }
    },
    {
      "ID": "FAM-34",
      "name": "Monitoring dashboards and alerts",
      "type": "Story",
      "properties": {
        "Key": "FAM-34",
        "Status": "To Do",
        "Resolution": "",
        "Priority": "Medium",
        "Story points": 3,
        "Team": "Platform/DevOps",
        "Sprint": "Sprint 5",
        "Sprints carried": "",
        "Assignee": "Freya Larsen",
        "Reporter": "Priya Natarajan",
        "Component": "Infrastructure",
        "Labels": "ops",
        "Fix version": "1.0 Staff Pilot",
        "Affects version": "",
        "Created": "2026-09-02T11:20:00",
        "Start": "",
        "Resolved": "",
        "Reopened": "",
        "Due date": "",
        "Timeline date": "2026-10-26T09:00:00",
        "Flagged": false,
        "Flagged since": "",
        "Open blockers": 0,
        "Blocked by other team": false,
        "Late blocker": false,
        "Severity": "",
        "Estimate h": 12,
        "Spent h": 0,
        "Remaining h": 12,
        "Comments": 0,
        "Jira link": "https://jira.example.com/browse/FAM-34"
      },
      "description": "Monitoring dashboards and alerts is the Platform/DevOps story for dashboards on allowance runs, top-ups, notification delivery and verification checks, with alerts to the on-call engineer. Freya Larsen will build it in Sprint 5; a draft dashboard is attached.\n\nIt relates to the nightly ledger reconciliation job, whose differences it will alert on, so that a problem like the double allowance pages someone instead of waiting to be found in test data.\n\nhttps://jira.example.com/browse/FAM-34",
      "size": 1.56,
      "position": {
        "x": 134.37,
        "y": -24.667999999999946,
        "z": 0
      },
      "images": ["070cb888-d43c-4722-a2ea-ad2fa67b4356"]
    },
    {
      "ID": "FAM-35",
      "name": "End-to-end regression suite for family flows",
      "type": "Story",
      "properties": {
        "Key": "FAM-35",
        "Status": "To Do",
        "Resolution": "",
        "Priority": "High",
        "Story points": 5,
        "Team": "QA",
        "Sprint": "Sprint 5",
        "Sprints carried": "",
        "Assignee": "Grace Liu",
        "Reporter": "Priya Natarajan",
        "Component": "Test automation",
        "Labels": "testing",
        "Fix version": "1.0 Staff Pilot",
        "Affects version": "",
        "Created": "2026-09-02T11:40:00",
        "Start": "",
        "Resolved": "",
        "Reopened": "",
        "Due date": "",
        "Timeline date": "2026-10-26T09:00:00",
        "Flagged": false,
        "Flagged since": "",
        "Open blockers": 4,
        "Blocked by other team": true,
        "Late blocker": false,
        "Severity": "",
        "Estimate h": 20,
        "Spent h": 0,
        "Remaining h": 20,
        "Comments": 2,
        "Jira link": "https://jira.example.com/browse/FAM-35"
      },
      "description": "End-to-end regression suite for family flows is the QA story for automated tests on real devices covering adding a child, ID capture, the wallet home, child sign-in and push messages. Grace Liu owns it in Sprint 5, with device farm slots booked from 26 October.\n\nGrace noted on 12 October that all five flows must be done before the suite can run end to end, so it is blocked by five stories from Mobile, some of which are themselves blocked by other teams. Its result is a condition of the pilot go/no-go.\n\nhttps://jira.example.com/browse/FAM-35",
      "size": 1.95,
      "position": {
        "x": 144.73299999999998,
        "y": -91.05250000000042,
        "z": 0
      }
    },
    {
      "ID": "FAM-38",
      "name": "Child app sign-in with PIN",
      "type": "Story",
      "properties": {
        "Key": "FAM-38",
        "Status": "In Progress",
        "Resolution": "",
        "Priority": "High",
        "Story points": 5,
        "Team": "Mobile",
        "Sprint": "Sprint 4",
        "Sprints carried": "",
        "Assignee": "Lucía Ferrer",
        "Reporter": "Priya Natarajan",
        "Component": "Child app",
        "Labels": "child-app",
        "Fix version": "1.0 Staff Pilot",
        "Affects version": "",
        "Created": "2026-09-03T10:00:00",
        "Start": "2026-10-12T10:30:00",
        "Resolved": "",
        "Reopened": "",
        "Due date": "",
        "Timeline date": "2026-10-12T10:30:00",
        "Flagged": false,
        "Flagged since": "",
        "Open blockers": 1,
        "Blocked by other team": true,
        "Late blocker": true,
        "Severity": "",
        "Estimate h": 20,
        "Spent h": 12,
        "Remaining h": 8,
        "Comments": 2,
        "Jira link": "https://jira.example.com/browse/FAM-38"
      },
      "description": "Child app sign-in with PIN is the mobile story that lets children open their own app with a four-digit PIN set by the guardian, with lockout after five wrong attempts and an optional fingerprint. Lucía Ferrer started it on 12 October in Sprint 4.\n\nSign-in works in the simulator, but the child app cannot be installed on a real test phone without its own app ID and signing certificates. Those are in the task App ID, signing and push certificates for child app, which sits in the backlog without an owner, so this story is blocked by work planned after it. Priya raised it at stand-up on 14 October as a pilot risk. Once done, it is one of the five stories the pilot regression suite needs.\n\nhttps://jira.example.com/browse/FAM-38",
      "size": 1.95,
      "position": {
        "x": 111.549,
        "y": -66.04800000000012,
        "z": 0
      }
    },
    {
      "ID": "FAM-39",
      "name": "Manual review queue for failed checks",
      "type": "Story",
      "properties": {
        "Key": "FAM-39",
        "Status": "To Do",
        "Resolution": "",
        "Priority": "Medium",
        "Story points": 5,
        "Team": "Web",
        "Sprint": "Sprint 5",
        "Sprints carried": "",
        "Assignee": "Elif Demir",
        "Reporter": "Priya Natarajan",
        "Component": "Web portal",
        "Labels": "kyc, back-office",
        "Fix version": "1.0 Staff Pilot",
        "Affects version": "",
        "Created": "2026-09-03T10:30:00",
        "Start": "",
        "Resolved": "",
        "Reopened": "",
        "Due date": "",
        "Timeline date": "2026-10-26T09:00:00",
        "Flagged": false,
        "Flagged since": "",
        "Open blockers": 0,
        "Blocked by other team": false,
        "Late blocker": false,
        "Severity": "",
        "Estimate h": 20,
        "Spent h": 0,
        "Remaining h": 20,
        "Comments": 0,
        "Jira link": "https://jira.example.com/browse/FAM-39"
      },
      "description": "Manual review queue for failed checks is the web story for a back-office queue where staff review guardians whose automatic ID check failed and approve or reject them with a reason. Elif Demir of Web will build it in Sprint 5.\n\nIt became possible when the provider integration was done on 8 October, because that is where failed checks come from. A wireframe is attached. It is needed for the pilot because every rejected check otherwise leaves a staff family stuck without a wallet.\n\nhttps://jira.example.com/browse/FAM-39",
      "size": 1.95,
      "position": {
        "x": 141.73300000000006,
        "y": -115.48599999999918,
        "z": 0
      },
      "images": ["52103ec8-c5b4-42b3-84d5-81e3239fbe72"]
    },
    {
      "ID": "FAM-41",
      "name": "Design allowance scheduler",
      "type": "Story",
      "properties": {
        "Key": "FAM-41",
        "Status": "Done",
        "Resolution": "Done",
        "Priority": "Medium",
        "Story points": 3,
        "Team": "Design/UX",
        "Sprint": "Sprint 3",
        "Sprints carried": "",
        "Assignee": "Arjun Mehta",
        "Reporter": "Priya Natarajan",
        "Component": "Design",
        "Labels": "design, allowance",
        "Fix version": "1.0 Staff Pilot",
        "Affects version": "",
        "Created": "2026-09-09T10:00:00",
        "Start": "2026-09-28T10:30:00",
        "Resolved": "2026-10-02T16:00:00",
        "Reopened": "",
        "Due date": "",
        "Timeline date": "2026-09-28T10:30:00",
        "Flagged": false,
        "Flagged since": "",
        "Open blockers": 0,
        "Blocked by other team": false,
        "Late blocker": false,
        "Severity": "",
        "Estimate h": 12,
        "Spent h": 13,
        "Remaining h": 0,
        "Comments": 2,
        "Jira link": "https://jira.example.com/browse/FAM-41"
      },
      "description": "Design allowance scheduler is the design story for setting an allowance: weekly or monthly, a day picker and an amount, with the next payout date shown on the card. Arjun Mehta did it at the start of Sprint 3 and finished on 2 October.\n\nMobile asked whether a change applies to the next payout or the one after; the answer, to the next payout if it is made before 18:00 the day before, became part of the design. It unblocked the allowance schedule API and the set-allowance screen.\n\nhttps://jira.example.com/browse/FAM-41",
      "size": 1.56,
      "position": {
        "x": 80.15399999999998,
        "y": -100.64900000000097,
        "z": 0
      },
      "images": ["738d1b3f-4fde-45a0-8678-56842703f86e"]
    },
    {
      "ID": "FAM-42",
      "name": "Allowance schedule API",
      "type": "Story",
      "properties": {
        "Key": "FAM-42",
        "Status": "Done",
        "Resolution": "Done",
        "Priority": "High",
        "Story points": 5,
        "Team": "Core Backend",
        "Sprint": "Sprint 3",
        "Sprints carried": "",
        "Assignee": "Jonas Weber",
        "Reporter": "Priya Natarajan",
        "Component": "Ledger",
        "Labels": "allowance",
        "Fix version": "1.0 Staff Pilot",
        "Affects version": "",
        "Created": "2026-09-09T10:20:00",
        "Start": "2026-10-05T09:30:00",
        "Resolved": "2026-10-09T12:00:00",
        "Reopened": "",
        "Due date": "",
        "Timeline date": "2026-10-05T09:30:00",
        "Flagged": false,
        "Flagged since": "",
        "Open blockers": 0,
        "Blocked by other team": false,
        "Late blocker": false,
        "Severity": "",
        "Estimate h": 20,
        "Spent h": 26,
        "Remaining h": 0,
        "Comments": 4,
        "Jira link": "https://jira.example.com/browse/FAM-42"
      },
      "description": "Allowance schedule API is the backend story for the API and scheduler that pay allowances at 06:00 in the family's local time. Jonas Weber built it in Sprint 3, after the sub-ledger and the scheduler design, and finished on 9 October.\n\nIts comment thread records a decision: allowances are weekly or monthly, paid at 06:00 local time, and run times are stored in UTC together with the family timezone. The story unblocked the set-allowance screen, but the same day QA found that this approach pays the allowance twice when the clocks change. That became the bug Allowance paid twice when clocks change, caused by this story.\n\nhttps://jira.example.com/browse/FAM-42",
      "size": 1.95,
      "position": {
        "x": 86.98400000000001,
        "y": -51.315640322140084,
        "z": 0
      }
    },
    {
      "ID": "FAM-43",
      "name": "Card transaction event stream",
      "type": "Story",
      "properties": {
        "Key": "FAM-43",
        "Status": "In Progress",
        "Resolution": "",
        "Priority": "Highest",
        "Story points": 5,
        "Team": "Core Backend",
        "Sprint": "Sprint 4",
        "Sprints carried": "Sprint 3 > Sprint 4",
        "Assignee": "Amara Okafor",
        "Reporter": "Priya Natarajan",
        "Component": "Notifications",
        "Labels": "events",
        "Fix version": "1.0 Staff Pilot",
        "Affects version": "",
        "Created": "2026-09-09T11:00:00",
        "Start": "2026-10-07T10:00:00",
        "Resolved": "",
        "Reopened": "",
        "Due date": "",
        "Timeline date": "2026-10-07T10:00:00",
        "Flagged": false,
        "Flagged since": "",
        "Open blockers": 0,
        "Blocked by other team": false,
        "Late blocker": false,
        "Severity": "",
        "Estimate h": 20,
        "Spent h": 14,
        "Remaining h": 6,
        "Comments": 3,
        "Jira link": "https://jira.example.com/browse/FAM-43"
      },
      "description": "Card transaction event stream is the backend story that publishes child card transactions from the card processor within two seconds, for notifications, risk scoring and spending categories. Amara Okafor started it on 7 October in Sprint 3.\n\nThe card processor's test feed was down for two days, so the story was carried over into Sprint 4. On 13 October Priya raised its priority to Highest because three teams wait on it: the risk score, the push notification and the spending categories model. Amara split the consumer from the replay tool so the consumer ships first, with an expected date of 20 October. It is the project's open bottleneck; everything in spending limits and insights sits behind it.\n\nhttps://jira.example.com/browse/FAM-43",
      "size": 1.95,
      "position": {
        "x": 106.648,
        "y": -56.06564032214008,
        "z": 0
      }
    },
    {
      "ID": "FAM-44",
      "name": "Push notification to guardian on child spend",
      "type": "Story",
      "properties": {
        "Key": "FAM-44",
        "Status": "To Do",
        "Resolution": "",
        "Priority": "High",
        "Story points": 5,
        "Team": "Mobile",
        "Sprint": "Sprint 5",
        "Sprints carried": "",
        "Assignee": "Lucía Ferrer",
        "Reporter": "Priya Natarajan",
        "Component": "Notifications",
        "Labels": "push",
        "Fix version": "1.0 Staff Pilot",
        "Affects version": "",
        "Created": "2026-09-09T11:20:00",
        "Start": "",
        "Resolved": "",
        "Reopened": "",
        "Due date": "",
        "Timeline date": "2026-10-26T09:00:00",
        "Flagged": false,
        "Flagged since": "",
        "Open blockers": 2,
        "Blocked by other team": true,
        "Late blocker": true,
        "Severity": "",
        "Estimate h": 20,
        "Spent h": 0,
        "Remaining h": 20,
        "Comments": 3,
        "Jira link": "https://jira.example.com/browse/FAM-44"
      },
      "description": "Push notification to guardian on child spend is the mobile story that sends each guardian a push message when a child pays by card: child name and amount on the lock screen, the merchant only inside the app. Lucía Ferrer will build it in Sprint 5.\n\nIt has three blockers from three teams: the notification copy (done 7 October), the card event stream (late) and the child app's certificates and push keys. On 1 October Lucía asked in the comments who owns the push key; Sam Adeyemi of Platform/DevOps said it was not on their board and filed the task App ID, signing and push certificates for child app, which is still unassigned. Once done, push is one of the five flows the pilot regression suite covers.\n\nhttps://jira.example.com/browse/FAM-44",
      "size": 1.95,
      "position": {
        "x": 139.73299999999998,
        "y": -70.7370000000001,
        "z": 0
      },
      "images": ["b2461c2c-af70-483c-a94e-69c6b8564c38"]
    },
    {
      "ID": "FAM-45",
      "name": "Notification preferences",
      "type": "Story",
      "properties": {
        "Key": "FAM-45",
        "Status": "To Do",
        "Resolution": "",
        "Priority": "Medium",
        "Story points": 3,
        "Team": "Web",
        "Sprint": "Sprint 5",
        "Sprints carried": "",
        "Assignee": "Noah Fischer",
        "Reporter": "Priya Natarajan",
        "Component": "Web portal",
        "Labels": "push",
        "Fix version": "1.0 Staff Pilot",
        "Affects version": "",
        "Created": "2026-09-09T11:40:00",
        "Start": "",
        "Resolved": "",
        "Reopened": "",
        "Due date": "",
        "Timeline date": "2026-10-26T09:00:00",
        "Flagged": false,
        "Flagged since": "",
        "Open blockers": 0,
        "Blocked by other team": false,
        "Late blocker": false,
        "Severity": "",
        "Estimate h": 12,
        "Spent h": 0,
        "Remaining h": 12,
        "Comments": 0,
        "Jira link": "https://jira.example.com/browse/FAM-45"
      },
      "description": "Notification preferences is the web story where each guardian chooses which messages they get: every payment, payments above an amount, or a daily digest. Noah Fischer will build it in Sprint 5.\n\nIt was unblocked on 7 October when the notification copy and templates were finished, since the options follow the message types. Preferences matter because two guardians in one family often want different amounts of messages.\n\nhttps://jira.example.com/browse/FAM-45",
      "size": 1.56,
      "position": {
        "x": 142.73300000000006,
        "y": -110.73599999999918,
        "z": 0
      }
    },
    {
      "ID": "FAM-46",
      "name": "Notification copy and templates",
      "type": "Story",
      "properties": {
        "Key": "FAM-46",
        "Status": "Done",
        "Resolution": "Done",
        "Priority": "Medium",
        "Story points": 2,
        "Team": "Design/UX",
        "Sprint": "Sprint 3",
        "Sprints carried": "",
        "Assignee": "Arjun Mehta",
        "Reporter": "Priya Natarajan",
        "Component": "Design",
        "Labels": "push, design",
        "Fix version": "1.0 Staff Pilot",
        "Affects version": "",
        "Created": "2026-09-09T12:00:00",
        "Start": "2026-10-05T10:00:00",
        "Resolved": "2026-10-07T15:30:00",
        "Reopened": "",
        "Due date": "",
        "Timeline date": "2026-10-05T10:00:00",
        "Flagged": false,
        "Flagged since": "",
        "Open blockers": 0,
        "Blocked by other team": false,
        "Late blocker": false,
        "Severity": "",
        "Estimate h": 8,
        "Spent h": 10.5,
        "Remaining h": 0,
        "Comments": 0,
        "Jira link": "https://jira.example.com/browse/FAM-46"
      },
      "description": "Notification copy and templates is the design story for message templates for spend, top-up and allowance events. Arjun Mehta wrote them in Sprint 3 and finished on 7 October.\n\nThe key rule is privacy: the lock screen shows child name and amount only, never the merchant. Finishing the copy unblocked both the push notification story in Mobile and the notification preferences page in Web.\n\nhttps://jira.example.com/browse/FAM-46",
      "size": 1.32,
      "position": {
        "x": 84.15299999999998,
        "y": -102.20900000000097,
        "z": 0
      }
    },
    {
      "ID": "FAM-47",
      "name": "Set allowance screen",
      "type": "Story",
      "properties": {
        "Key": "FAM-47",
        "Status": "To Do",
        "Resolution": "",
        "Priority": "Medium",
        "Story points": 5,
        "Team": "Mobile",
        "Sprint": "Sprint 4",
        "Sprints carried": "",
        "Assignee": "Lucía Ferrer",
        "Reporter": "Priya Natarajan",
        "Component": "Mobile app",
        "Labels": "allowance",
        "Fix version": "1.0 Staff Pilot",
        "Affects version": "",
        "Created": "2026-09-10T10:00:00",
        "Start": "",
        "Resolved": "",
        "Reopened": "",
        "Due date": "",
        "Timeline date": "2026-10-12T09:00:00",
        "Flagged": true,
        "Flagged since": "2026-10-14T11:30:00",
        "Open blockers": 1,
        "Blocked by other team": true,
        "Late blocker": false,
        "Severity": "",
        "Estimate h": 20,
        "Spent h": 0,
        "Remaining h": 20,
        "Comments": 0,
        "Jira link": "https://jira.example.com/browse/FAM-47"
      },
      "description": "Set allowance screen is the mobile story where a guardian sets or changes a child's allowance, following the scheduler design. It waits on three items: the design and the allowance API, both done, and the double-allowance bug Allowance paid twice when clocks change.\n\nLucía Ferrer had it ready to start in Sprint 4, but when the bug was reopened on 14 October Priya flagged this screen, because letting guardians create schedules that may pay twice is not acceptable before the pilot. It stays flagged until the bug is fixed on both payment paths.\n\nhttps://jira.example.com/browse/FAM-47",
      "size": 1.95,
      "position": {
        "x": 119.21800000000002,
        "y": -66.38700000000009,
        "z": 0
      }
    },
    {
      "ID": "FAM-48",
      "name": "Risk score for child card payments",
      "type": "Story",
      "properties": {
        "Key": "FAM-48",
        "Status": "To Do",
        "Resolution": "",
        "Priority": "High",
        "Story points": 8,
        "Team": "Data & Risk",
        "Sprint": "Sprint 4",
        "Sprints carried": "",
        "Assignee": "Hannah Kowalski",
        "Reporter": "Priya Natarajan",
        "Component": "Risk engine",
        "Labels": "risk",
        "Fix version": "1.1 Public Launch",
        "Affects version": "",
        "Created": "2026-09-10T11:00:00",
        "Start": "",
        "Resolved": "",
        "Reopened": "",
        "Due date": "",
        "Timeline date": "2026-10-12T09:00:00",
        "Flagged": false,
        "Flagged since": "",
        "Open blockers": 1,
        "Blocked by other team": true,
        "Late blocker": false,
        "Severity": "",
        "Estimate h": 32,
        "Spent h": 0,
        "Remaining h": 32,
        "Comments": 2,
        "Jira link": "https://jira.example.com/browse/FAM-48"
      },
      "description": "Risk score for child card payments is the Data and Risk story for a score per payment from amount, merchant type, time of day and the child's usual pattern, used to decide which payments the limits engine checks more strictly. Hannah Kowalski planned it for Sprint 4.\n\nOn 12 October she reported that she cannot start, because the score needs live card events from the event stream. Amara Okafor answered that the event schema is fixed and the stream should be ready by 20 October. Until then the risk score waits, and with it the limits engine and the whole spending-limits feature for the public launch.\n\nhttps://jira.example.com/browse/FAM-48",
      "size": 2.4,
      "position": {
        "x": 116.569,
        "y": -35.212989548914294,
        "z": 0
      }
    },
    {
      "ID": "FAM-49",
      "name": "Limit rules engine",
      "type": "Story",
      "properties": {
        "Key": "FAM-49",
        "Status": "To Do",
        "Resolution": "",
        "Priority": "High",
        "Story points": 13,
        "Team": "Core Backend",
        "Sprint": "Sprint 5",
        "Sprints carried": "",
        "Assignee": "Amara Okafor",
        "Reporter": "Priya Natarajan",
        "Component": "Risk engine",
        "Labels": "risk, limits",
        "Fix version": "1.1 Public Launch",
        "Affects version": "",
        "Created": "2026-09-10T11:20:00",
        "Start": "",
        "Resolved": "",
        "Reopened": "",
        "Due date": "",
        "Timeline date": "2026-10-26T09:00:00",
        "Flagged": false,
        "Flagged since": "",
        "Open blockers": 1,
        "Blocked by other team": true,
        "Late blocker": false,
        "Severity": "",
        "Estimate h": 52,
        "Spent h": 0,
        "Remaining h": 52,
        "Comments": 0,
        "Jira link": "https://jira.example.com/browse/FAM-49"
      },
      "description": "Limit rules engine is the largest backend story in the project at 13 points: an engine that approves or declines child card payments against daily limits, blocked merchant categories and the risk score. Amara Okafor will build it in Sprint 5.\n\nIt waits on the risk score, which itself waits on the event stream, so it sits in the middle of the project's open bottleneck chain. Once done it unblocks both limit screens, the mobile merchant-category screen and the web limits page.\n\nhttps://jira.example.com/browse/FAM-49",
      "size": 3,
      "position": {
        "x": 137.563,
        "y": -57.06564032214008,
        "z": 0
      }
    },
    {
      "ID": "FAM-50",
      "name": "Block merchant categories screen",
      "type": "Story",
      "properties": {
        "Key": "FAM-50",
        "Status": "To Do",
        "Resolution": "",
        "Priority": "Medium",
        "Story points": 5,
        "Team": "Mobile",
        "Sprint": "Sprint 5",
        "Sprints carried": "",
        "Assignee": "Lucía Ferrer",
        "Reporter": "Priya Natarajan",
        "Component": "Mobile app",
        "Labels": "limits",
        "Fix version": "1.1 Public Launch",
        "Affects version": "",
        "Created": "2026-09-11T10:00:00",
        "Start": "",
        "Resolved": "",
        "Reopened": "",
        "Due date": "",
        "Timeline date": "2026-10-26T09:00:00",
        "Flagged": false,
        "Flagged since": "",
        "Open blockers": 2,
        "Blocked by other team": true,
        "Late blocker": true,
        "Severity": "",
        "Estimate h": 20,
        "Spent h": 0,
        "Remaining h": 20,
        "Comments": 3,
        "Jira link": "https://jira.example.com/browse/FAM-50"
      },
      "description": "Block merchant categories screen is the mobile story where a guardian switches merchant categories on or off for each child, for example gambling, alcohol or in-game purchases. Lucía Ferrer will build it in Sprint 5.\n\nIt has two blockers: the limit rules engine and the merchant category mapping table. The table is a late blocker, planned for Sprint 6 while the screen is planned for Sprint 5. Lucía raised this on 7 October; Tomás Rivera offered a stub with the 12 categories in Sprint 5, and Lucía asked to confirm that in planning, so the screen can be built before the full mapping exists.\n\nhttps://jira.example.com/browse/FAM-50",
      "size": 1.95,
      "position": {
        "x": 143.73299999999998,
        "y": -75.9870000000001,
        "z": 0
      },
      "images": ["808c3cdf-33ca-4733-ba4a-e3254b40bbaa"]
    },
    {
      "ID": "FAM-52",
      "name": "Limits page for guardians",
      "type": "Story",
      "properties": {
        "Key": "FAM-52",
        "Status": "To Do",
        "Resolution": "",
        "Priority": "Low",
        "Story points": 3,
        "Team": "Web",
        "Sprint": "Sprint 6",
        "Sprints carried": "",
        "Assignee": "Elif Demir",
        "Reporter": "Priya Natarajan",
        "Component": "Web portal",
        "Labels": "limits",
        "Fix version": "1.1 Public Launch",
        "Affects version": "",
        "Created": "2026-09-11T10:40:00",
        "Start": "",
        "Resolved": "",
        "Reopened": "",
        "Due date": "",
        "Timeline date": "2026-11-09T09:00:00",
        "Flagged": false,
        "Flagged since": "",
        "Open blockers": 1,
        "Blocked by other team": true,
        "Late blocker": false,
        "Severity": "",
        "Estimate h": 12,
        "Spent h": 0,
        "Remaining h": 12,
        "Comments": 0,
        "Jira link": "https://jira.example.com/browse/FAM-52"
      },
      "description": "Limits page for guardians is the web story for setting daily limits and merchant blocks online, matching the app screens. Elif Demir will build it in Sprint 6 for the public launch.\n\nIt waits on the limit rules engine, which waits on the risk score, which waits on the card event stream, so it is at the far end of the open bottleneck chain.\n\nhttps://jira.example.com/browse/FAM-52",
      "size": 1.56,
      "position": {
        "x": 169.57900000000006,
        "y": -115.48599999999918,
        "z": 0
      }
    },
    {
      "ID": "FAM-55",
      "name": "Spending categories model",
      "type": "Story",
      "properties": {
        "Key": "FAM-55",
        "Status": "To Do",
        "Resolution": "",
        "Priority": "Medium",
        "Story points": 5,
        "Team": "Data & Risk",
        "Sprint": "Sprint 5",
        "Sprints carried": "",
        "Assignee": "Tomás Rivera",
        "Reporter": "Priya Natarajan",
        "Component": "Analytics",
        "Labels": "insights",
        "Fix version": "1.1 Public Launch",
        "Affects version": "",
        "Created": "2026-09-14T10:00:00",
        "Start": "",
        "Resolved": "",
        "Reopened": "",
        "Due date": "",
        "Timeline date": "2026-10-26T09:00:00",
        "Flagged": false,
        "Flagged since": "",
        "Open blockers": 1,
        "Blocked by other team": true,
        "Late blocker": false,
        "Severity": "",
        "Estimate h": 20,
        "Spent h": 0,
        "Remaining h": 20,
        "Comments": 0,
        "Jira link": "https://jira.example.com/browse/FAM-55"
      },
      "description": "Spending categories model is the Data and Risk story that sorts child card payments into spending categories such as food, games, transport and school. Tomás Rivera will build it in Sprint 5.\n\nIt cannot start before the card event stream delivers live transactions. Once done, it feeds the insights screen in the app, and the weekly family summary email reuses its categories.\n\nhttps://jira.example.com/browse/FAM-55",
      "size": 1.95,
      "position": {
        "x": 135.35399999999998,
        "y": -36.3229895489143,
        "z": 0
      }
    },
    {
      "ID": "FAM-56",
      "name": "Insights dashboard design",
      "type": "Story",
      "properties": {
        "Key": "FAM-56",
        "Status": "To Do",
        "Resolution": "",
        "Priority": "Medium",
        "Story points": 3,
        "Team": "Design/UX",
        "Sprint": "Sprint 5",
        "Sprints carried": "",
        "Assignee": "Sofia Marino",
        "Reporter": "Priya Natarajan",
        "Component": "Design",
        "Labels": "insights, design",
        "Fix version": "1.1 Public Launch",
        "Affects version": "",
        "Created": "2026-09-14T10:20:00",
        "Start": "",
        "Resolved": "",
        "Reopened": "",
        "Due date": "",
        "Timeline date": "2026-10-26T09:00:00",
        "Flagged": false,
        "Flagged since": "",
        "Open blockers": 0,
        "Blocked by other team": false,
        "Late blocker": false,
        "Severity": "",
        "Estimate h": 12,
        "Spent h": 0,
        "Remaining h": 12,
        "Comments": 0,
        "Jira link": "https://jira.example.com/browse/FAM-56"
      },
      "description": "Insights dashboard design is the design story for the spending insights view: spend by category per child and week, compared with the previous week. Sofia Marino will do it in Sprint 5; a first sketch is attached.\n\nLike the other design stories in the project, it comes before the build: it blocks the insights screen in the app, which also needs the spending categories model.\n\nhttps://jira.example.com/browse/FAM-56",
      "size": 1.56,
      "position": {
        "x": 140.73300000000003,
        "y": -100.64900000000097,
        "z": 0
      },
      "images": ["2f11ccb8-dc1c-494b-a71e-c2f149f48a74"]
    },
    {
      "ID": "FAM-57",
      "name": "Insights screen in app",
      "type": "Story",
      "properties": {
        "Key": "FAM-57",
        "Status": "To Do",
        "Resolution": "",
        "Priority": "Medium",
        "Story points": 8,
        "Team": "Mobile",
        "Sprint": "Sprint 6",
        "Sprints carried": "",
        "Assignee": "Kenji Sato",
        "Reporter": "Priya Natarajan",
        "Component": "Mobile app",
        "Labels": "insights",
        "Fix version": "1.1 Public Launch",
        "Affects version": "",
        "Created": "2026-09-14T10:40:00",
        "Start": "",
        "Resolved": "",
        "Reopened": "",
        "Due date": "",
        "Timeline date": "2026-11-09T09:00:00",
        "Flagged": false,
        "Flagged since": "",
        "Open blockers": 2,
        "Blocked by other team": true,
        "Late blocker": false,
        "Severity": "",
        "Estimate h": 32,
        "Spent h": 0,
        "Remaining h": 32,
        "Comments": 0,
        "Jira link": "https://jira.example.com/browse/FAM-57"
      },
      "description": "Insights screen in app is the mobile story for the spending insights screen in the guardian app. Kenji Sato will build it in Sprint 6 for the public launch.\n\nIt needs two things first: the spending categories model, which waits on the card event stream, and the dashboard design from Design/UX. It is the last step of the insights chain.\n\nhttps://jira.example.com/browse/FAM-57",
      "size": 2.4,
      "position": {
        "x": 168.57899999999998,
        "y": -70.7370000000001,
        "z": 0
      }
    },
    {
      "ID": "FAM-58",
      "name": "Weekly family summary email",
      "type": "Story",
      "properties": {
        "Key": "FAM-58",
        "Status": "To Do",
        "Resolution": "",
        "Priority": "Low",
        "Story points": 3,
        "Team": "Core Backend",
        "Sprint": "Sprint 6",
        "Sprints carried": "",
        "Assignee": "Jonas Weber",
        "Reporter": "Priya Natarajan",
        "Component": "Notifications",
        "Labels": "insights",
        "Fix version": "1.1 Public Launch",
        "Affects version": "",
        "Created": "2026-09-14T11:00:00",
        "Start": "",
        "Resolved": "",
        "Reopened": "",
        "Due date": "",
        "Timeline date": "2026-11-09T09:00:00",
        "Flagged": false,
        "Flagged since": "",
        "Open blockers": 0,
        "Blocked by other team": false,
        "Late blocker": false,
        "Severity": "",
        "Estimate h": 12,
        "Spent h": 0,
        "Remaining h": 12,
        "Comments": 0,
        "Jira link": "https://jira.example.com/browse/FAM-58"
      },
      "description": "Weekly family summary email is the backend story for a Sunday email to guardians with each child's spend, allowance and balance for the week. Jonas Weber will build it in Sprint 6.\n\nIt relates to the spending categories model because the email reuses its categories, so it naturally follows that model.\n\nhttps://jira.example.com/browse/FAM-58",
      "size": 1.56,
      "position": {
        "x": 167.409,
        "y": -51.315640322140084,
        "z": 0
      }
    },
    {
      "ID": "FAM-30",
      "name": "Penetration test of family endpoints",
      "type": "Task",
      "properties": {
        "Key": "FAM-30",
        "Status": "To Do",
        "Resolution": "",
        "Priority": "High",
        "Story points": 5,
        "Team": "Security & Compliance",
        "Sprint": "Sprint 5",
        "Sprints carried": "",
        "Assignee": "Viktor Nilsson",
        "Reporter": "Priya Natarajan",
        "Component": "Compliance",
        "Labels": "security",
        "Fix version": "1.0 Staff Pilot",
        "Affects version": "",
        "Created": "2026-09-01T10:20:00",
        "Start": "",
        "Resolved": "",
        "Reopened": "",
        "Due date": "2026-10-30",
        "Timeline date": "2026-10-26T09:00:00",
        "Flagged": false,
        "Flagged since": "",
        "Open blockers": 0,
        "Blocked by other team": false,
        "Late blocker": false,
        "Severity": "",
        "Estimate h": 20,
        "Spent h": 0,
        "Remaining h": 20,
        "Comments": 0,
        "Jira link": "https://jira.example.com/browse/FAM-30"
      },
      "description": "Penetration test of family endpoints is the Security and Compliance task for an external penetration test of the family, consent and wallet endpoints, booked for 27 to 30 October. Viktor Nilsson owns it in Sprint 5.\n\nIt is a condition of the staff pilot: its results go into the go/no-go meeting on 4 November.\n\nhttps://jira.example.com/browse/FAM-30",
      "size": 1.95,
      "position": {
        "x": 132.623,
        "y": -10.8,
        "z": 0
      }
    },
    {
      "ID": "FAM-36",
      "name": "Staff pilot go/no-go",
      "type": "Task",
      "properties": {
        "Key": "FAM-36",
        "Status": "To Do",
        "Resolution": "",
        "Priority": "High",
        "Story points": 1,
        "Team": "Platform/DevOps",
        "Sprint": "Sprint 5",
        "Sprints carried": "",
        "Assignee": "Sam Adeyemi",
        "Reporter": "Priya Natarajan",
        "Component": "Infrastructure",
        "Labels": "rollout, pilot-blocker",
        "Fix version": "1.0 Staff Pilot",
        "Affects version": "",
        "Created": "2026-09-02T12:00:00",
        "Start": "",
        "Resolved": "",
        "Reopened": "",
        "Due date": "2026-11-04",
        "Timeline date": "2026-10-26T09:00:00",
        "Flagged": false,
        "Flagged since": "",
        "Open blockers": 5,
        "Blocked by other team": true,
        "Late blocker": true,
        "Severity": "",
        "Estimate h": 4,
        "Spent h": 0,
        "Remaining h": 4,
        "Comments": 3,
        "Jira link": "https://jira.example.com/browse/FAM-36"
      },
      "description": "Staff pilot go/no-go is the decision meeting on 4 November on whether the staff pilot starts on 6 November, based on open blockers, test results and sign-offs. Sam Adeyemi owns it; it is the gate where every dependency chain in the project ends.\n\nSix items block it: the regression suite, the privacy sign-off, the penetration test, the load test, the feature flag (done), and since 14 October the reopened double-allowance bug. On 14 October Priya listed the open risks: the provider agreement, the reopened bug, the unowned child-app certificates, and the privacy sign-off waiting on retention rules and the device-ID bug. Sam added that the load test is planned after the meeting, and Priya decided to go ahead on 4 November with load test results or a written waiver.\n\nhttps://jira.example.com/browse/FAM-36",
      "size": 1,
      "position": {
        "x": 145.37,
        "y": -23.917999999999946,
        "z": 0
      }
    },
    {
      "ID": "FAM-37",
      "name": "Load test wallet endpoints",
      "type": "Task",
      "properties": {
        "Key": "FAM-37",
        "Status": "To Do",
        "Resolution": "",
        "Priority": "Medium",
        "Story points": 3,
        "Team": "Platform/DevOps",
        "Sprint": "Sprint 6",
        "Sprints carried": "",
        "Assignee": "Freya Larsen",
        "Reporter": "Sam Adeyemi",
        "Component": "Infrastructure",
        "Labels": "performance",
        "Fix version": "1.0 Staff Pilot",
        "Affects version": "",
        "Created": "2026-09-02T12:20:00",
        "Start": "",
        "Resolved": "",
        "Reopened": "",
        "Due date": "",
        "Timeline date": "2026-11-09T09:00:00",
        "Flagged": false,
        "Flagged since": "",
        "Open blockers": 0,
        "Blocked by other team": false,
        "Late blocker": false,
        "Severity": "",
        "Estimate h": 12,
        "Spent h": 0,
        "Remaining h": 12,
        "Comments": 0,
        "Jira link": "https://jira.example.com/browse/FAM-37"
      },
      "description": "Load test wallet endpoints is the Platform/DevOps task to load-test top-up, balance and allowance endpoints at five times the expected pilot traffic. Freya Larsen owns it in Sprint 6.\n\nIt is a late blocker: it should inform the go/no-go on 4 November but is planned for the sprint after. Sam raised this on 14 October, and Priya decided that the meeting goes ahead with load test results if available or a written waiver.\n\nhttps://jira.example.com/browse/FAM-37",
      "size": 1.56,
      "position": {
        "x": 165.216,
        "y": -23.917999999999946,
        "z": 0
      }
    },
    {
      "ID": "FAM-40",
      "name": "Nightly ledger reconciliation job",
      "type": "Task",
      "properties": {
        "Key": "FAM-40",
        "Status": "To Do",
        "Resolution": "",
        "Priority": "Medium",
        "Story points": 3,
        "Team": "Platform/DevOps",
        "Sprint": "Sprint 4",
        "Sprints carried": "",
        "Assignee": "Freya Larsen",
        "Reporter": "Jonas Weber",
        "Component": "Infrastructure",
        "Labels": "ledger, ops",
        "Fix version": "1.0 Staff Pilot",
        "Affects version": "",
        "Created": "2026-09-08T10:00:00",
        "Start": "",
        "Resolved": "",
        "Reopened": "",
        "Due date": "",
        "Timeline date": "2026-10-12T09:00:00",
        "Flagged": false,
        "Flagged since": "",
        "Open blockers": 0,
        "Blocked by other team": false,
        "Late blocker": false,
        "Severity": "",
        "Estimate h": 12,
        "Spent h": 0,
        "Remaining h": 12,
        "Comments": 0,
        "Jira link": "https://jira.example.com/browse/FAM-40"
      },
      "description": "Nightly ledger reconciliation job is the Platform/DevOps task for a job that checks every child sub-ledger against the core ledger each night and alerts on differences, including allowances paid twice in one day. Jonas Weber asked for it on 8 September, and it became possible once the sub-ledger was done on 24 September.\n\nIt is planned in Sprint 4 but not started. It is the safety net for the reopened double-allowance bug, which is why that bug is recorded as related to it in Jira, and the monitoring dashboards will raise alerts on its results.\n\nhttps://jira.example.com/browse/FAM-40",
      "size": 1.56,
      "position": {
        "x": 114.45500000000001,
        "y": -23.917999999999946,
        "z": 0
      }
    },
    {
      "ID": "FAM-51",
      "name": "Merchant category mapping table",
      "type": "Task",
      "properties": {
        "Key": "FAM-51",
        "Status": "To Do",
        "Resolution": "",
        "Priority": "Medium",
        "Story points": 3,
        "Team": "Data & Risk",
        "Sprint": "Sprint 6",
        "Sprints carried": "",
        "Assignee": "Tomás Rivera",
        "Reporter": "Hannah Kowalski",
        "Component": "Risk engine",
        "Labels": "limits, data",
        "Fix version": "1.1 Public Launch",
        "Affects version": "",
        "Created": "2026-09-11T10:20:00",
        "Start": "",
        "Resolved": "",
        "Reopened": "",
        "Due date": "",
        "Timeline date": "2026-11-09T09:00:00",
        "Flagged": false,
        "Flagged since": "",
        "Open blockers": 0,
        "Blocked by other team": false,
        "Late blocker": false,
        "Severity": "",
        "Estimate h": 12,
        "Spent h": 0,
        "Remaining h": 12,
        "Comments": 0,
        "Jira link": "https://jira.example.com/browse/FAM-51"
      },
      "description": "Merchant category mapping table is the Data and Risk task that maps about 800 card merchant codes to the twelve categories guardians can block. Tomás Rivera will do it in Sprint 6.\n\nIt is a late blocker: the merchant-category screen that needs it is planned a sprint earlier. The teams agreed in comments on a stub list of the 12 categories in Sprint 5 so Mobile can start, with the full mapping following in Sprint 6.\n\nhttps://jira.example.com/browse/FAM-51",
      "size": 1.56,
      "position": {
        "x": 166.32999999999998,
        "y": -35.212989548914294,
        "z": 0
      }
    },
    {
      "ID": "FAM-63",
      "name": "App ID, signing and push certificates for child app",
      "type": "Task",
      "properties": {
        "Key": "FAM-63",
        "Status": "To Do",
        "Resolution": "",
        "Priority": "Medium",
        "Story points": 0,
        "Team": "Platform/DevOps",
        "Sprint": "Backlog",
        "Sprints carried": "",
        "Assignee": "",
        "Reporter": "Sam Adeyemi",
        "Component": "Infrastructure",
        "Labels": "child-app, push",
        "Fix version": "1.0 Staff Pilot",
        "Affects version": "",
        "Created": "2026-10-02T10:10:00",
        "Start": "",
        "Resolved": "",
        "Reopened": "",
        "Due date": "",
        "Timeline date": "2026-11-21T09:00:00",
        "Flagged": false,
        "Flagged since": "",
        "Open blockers": 0,
        "Blocked by other team": false,
        "Late blocker": false,
        "Severity": "",
        "Estimate h": 0,
        "Spent h": 0,
        "Remaining h": 0,
        "Comments": 0,
        "Jira link": "https://jira.example.com/browse/FAM-63"
      },
      "description": "App ID, signing and push certificates for child app is the Platform/DevOps task for the child app's own app ID, signing certificates and push keys, which are needed to install the child app on test phones and to send it push messages. Nobody planned it: it surfaced on 1 October when Mobile asked who owns the push key, and Sam Adeyemi filed it on 2 October.\n\nIt is the project's forgotten dependency. It sits in the backlog, unassigned and unestimated, yet it blocks two stories planned earlier, the child app PIN sign-in in Sprint 4 and the push notification in Sprint 5. Mobile reminded the team on 14 October, and Priya listed it among the open risks for the pilot go/no-go.\n\nhttps://jira.example.com/browse/FAM-63",
      "size": 0.8,
      "position": {
        "x": 191.854,
        "y": -23.917999999999946,
        "z": 0
      }
    },
    {
      "ID": "FAM-66",
      "name": "Provider sandbox access and data processing agreement",
      "type": "Task",
      "properties": {
        "Key": "FAM-66",
        "Status": "In Progress",
        "Resolution": "",
        "Priority": "High",
        "Story points": 2,
        "Team": "Security & Compliance",
        "Sprint": "Sprint 4",
        "Sprints carried": "",
        "Assignee": "Viktor Nilsson",
        "Reporter": "Amara Okafor",
        "Component": "Compliance",
        "Labels": "kyc, legal, pilot-blocker",
        "Fix version": "1.0 Staff Pilot",
        "Affects version": "",
        "Created": "2026-10-08T17:30:00",
        "Start": "2026-10-12T09:30:00",
        "Resolved": "",
        "Reopened": "",
        "Due date": "2026-10-21",
        "Timeline date": "2026-10-12T09:30:00",
        "Flagged": false,
        "Flagged since": "",
        "Open blockers": 0,
        "Blocked by other team": false,
        "Late blocker": false,
        "Severity": "",
        "Estimate h": 8,
        "Spent h": 3,
        "Remaining h": 5,
        "Comments": 2,
        "Jira link": "https://jira.example.com/browse/FAM-66"
      },
      "description": "Provider sandbox access and data processing agreement is the Security and Compliance task to sign a data processing agreement with the ID verification provider, which releases the live sandbox keys. Amara Okafor raised it on 8 October when finishing the integration, and Viktor Nilsson took it on 12 October.\n\nThe provider sent its standard agreement, but two clauses about storing ID images outside the EU need changes. Ines Duarte sent a redline back on 14 October and the provider promised an answer by 20 October, with the task due on 21 October. Until it is signed, the ID document capture screen stays flagged, and the provider agreement is on the list of open risks for the pilot go/no-go.\n\nhttps://jira.example.com/browse/FAM-66",
      "size": 1.32,
      "position": {
        "x": 106.699,
        "y": -14.450000000000001,
        "z": 0
      }
    },
    {
      "ID": "FAM-59",
      "name": "Family group API rejects guardians with joint accounts",
      "type": "Bug",
      "properties": {
        "Key": "FAM-59",
        "Status": "Done",
        "Resolution": "Done",
        "Priority": "High",
        "Story points": 2,
        "Team": "Core Backend",
        "Sprint": "Sprint 2",
        "Sprints carried": "",
        "Assignee": "Amara Okafor",
        "Reporter": "Lucía Ferrer",
        "Component": "Family API",
        "Labels": "family-group, pilot-blocker",
        "Fix version": "0.9 Foundations",
        "Affects version": "",
        "Created": "2026-09-16T15:00:00",
        "Start": "2026-09-17T09:30:00",
        "Resolved": "2026-09-21T15:40:00",
        "Reopened": "",
        "Due date": "",
        "Timeline date": "2026-09-17T09:30:00",
        "Flagged": false,
        "Flagged since": "",
        "Open blockers": 0,
        "Blocked by other team": false,
        "Late blocker": false,
        "Severity": "Major",
        "Estimate h": 8,
        "Spent h": 7,
        "Remaining h": 0,
        "Comments": 1,
        "Jira link": "https://jira.example.com/browse/FAM-59"
      },
      "description": "Family group API rejects guardians with joint accounts is the bug Lucía Ferrer of Mobile filed on 16 September when creating a family group failed with a server error for a guardian whose funding account is a joint account. It was caused by the story Family group data model and API, which accepted only single-owner accounts.\n\nAmara Okafor of Core Backend explained that joint accounts have two owners in the core system and changed the check so that any owner who has signed the family terms can fund the group. The fix was done on 21 September. That resolution unblocked the Create family group screen, which was unflagged within half an hour and finished three days later.\n\nhttps://jira.example.com/browse/FAM-59",
      "size": 1.32,
      "position": {
        "x": 57.12899999999999,
        "y": -56.31564032214008,
        "z": 0
      },
      "images": ["b3b8edc4-9cda-4436-a032-b5ecfeb54f55"]
    },
    {
      "ID": "FAM-67",
      "name": "Allowance paid twice when clocks change",
      "type": "Bug",
      "properties": {
        "Key": "FAM-67",
        "Status": "Reopened",
        "Resolution": "",
        "Priority": "Highest",
        "Story points": 3,
        "Team": "Core Backend",
        "Sprint": "Sprint 4",
        "Sprints carried": "",
        "Assignee": "Jonas Weber",
        "Reporter": "Grace Liu",
        "Component": "Ledger",
        "Labels": "allowance, dst, pilot-blocker",
        "Fix version": "1.0 Staff Pilot",
        "Affects version": "0.9 Foundations",
        "Created": "2026-10-09T14:30:00",
        "Start": "2026-10-12T09:30:00",
        "Resolved": "",
        "Reopened": "2026-10-14T10:15:00",
        "Due date": "2026-10-23",
        "Timeline date": "2026-10-12T09:30:00",
        "Flagged": false,
        "Flagged since": "",
        "Open blockers": 0,
        "Blocked by other team": false,
        "Late blocker": false,
        "Severity": "Critical",
        "Estimate h": 12,
        "Spent h": 14,
        "Remaining h": 4,
        "Comments": 5,
        "Jira link": "https://jira.example.com/browse/FAM-67"
      },
      "description": "Allowance paid twice when clocks change is the critical bug Grace Liu of QA filed on 9 October: when the clocks go back one hour, the allowance is paid at 06:00 and again an hour later, so money is paid out twice. It was caused by the allowance schedule API and its decision to store run times in UTC plus the family timezone. The next clock change in Europe is 25 October, which sets the deadline of 23 October.\n\nJonas Weber fixed the scheduled run on 13 October and the bug was closed. On 14 October Grace reopened it: with the staging clock set to 25 October, the catch-up job that pays missed runs keeps its own copy of the schedule and still pays the skipped run a second time. Jonas is now fixing both paths. Priya flagged the set-allowance screen and put the bug on the pilot go/no-go list, so it blocks both. It also relates to the nightly reconciliation job, which should detect such double payments, and a second report on 15 October was closed as its duplicate.\n\nhttps://jira.example.com/browse/FAM-67",
      "size": 1.56,
      "position": {
        "x": 108.648,
        "y": -51.315640322140084,
        "z": 0
      },
      "images": ["36be5597-595a-4cc5-8fed-77736b678bb0", "3a98c3ab-fa03-434f-9f65-f6360d07b515"]
    },
    {
      "ID": "FAM-75",
      "name": "Consent screen cut off on small Android screens",
      "type": "Bug",
      "properties": {
        "Key": "FAM-75",
        "Status": "In Review",
        "Resolution": "",
        "Priority": "Medium",
        "Story points": 2,
        "Team": "Mobile",
        "Sprint": "Sprint 4",
        "Sprints carried": "",
        "Assignee": "Kenji Sato",
        "Reporter": "Mateo Rossi",
        "Component": "Mobile app",
        "Labels": "consent, android",
        "Fix version": "1.0 Staff Pilot",
        "Affects version": "",
        "Created": "2026-10-13T13:40:00",
        "Start": "2026-10-14T09:00:00",
        "Resolved": "",
        "Reopened": "",
        "Due date": "",
        "Timeline date": "2026-10-14T09:00:00",
        "Flagged": false,
        "Flagged since": "",
        "Open blockers": 0,
        "Blocked by other team": false,
        "Late blocker": false,
        "Severity": "Major",
        "Estimate h": 8,
        "Spent h": 5,
        "Remaining h": 3,
        "Comments": 2,
        "Jira link": "https://jira.example.com/browse/FAM-75"
      },
      "description": "Consent screen cut off on small Android screens is the bug Mateo Rossi of QA found on 13 October: on 5-inch phones the consent text runs off the screen and the confirm button is hidden, so a guardian cannot finish adding a child. It was caused by the add-child flow, which had been finished the day before for larger screens.\n\nKenji Sato made the text scroll and pinned the button, and the fix went into review on 15 October. It matters for the pilot because staff families use whatever phones they own, and a guardian who cannot confirm consent cannot open a wallet.\n\nhttps://jira.example.com/browse/FAM-75",
      "size": 1.32,
      "position": {
        "x": 113.81800000000001,
        "y": -76.9870000000001,
        "z": 0
      },
      "images": ["5a9fb0d9-9f62-476f-8de5-a70f0ba5faaf"]
    },
    {
      "ID": "FAM-76",
      "name": "Consent audit log misses device ID",
      "type": "Bug",
      "properties": {
        "Key": "FAM-76",
        "Status": "To Do",
        "Resolution": "",
        "Priority": "High",
        "Story points": 2,
        "Team": "Core Backend",
        "Sprint": "Sprint 5",
        "Sprints carried": "",
        "Assignee": "Amara Okafor",
        "Reporter": "Ines Duarte",
        "Component": "Family API",
        "Labels": "consent, privacy",
        "Fix version": "1.0 Staff Pilot",
        "Affects version": "",
        "Created": "2026-10-13T15:20:00",
        "Start": "",
        "Resolved": "",
        "Reopened": "",
        "Due date": "",
        "Timeline date": "2026-10-26T09:00:00",
        "Flagged": false,
        "Flagged since": "",
        "Open blockers": 0,
        "Blocked by other team": false,
        "Late blocker": false,
        "Severity": "Major",
        "Estimate h": 8,
        "Spent h": 0,
        "Remaining h": 8,
        "Comments": 1,
        "Jira link": "https://jira.example.com/browse/FAM-76"
      },
      "description": "Consent audit log misses device ID is the bug Ines Duarte found on 13 October while reviewing the impact assessment: consent records are stored with an empty device ID, so the audit trail cannot show which device a consent came from. It was caused by the consent capture API, where she had asked for the device ID on 2 October and it was added to the schema but never filled.\n\nAmara Okafor will fix it in Sprint 5. Until then it blocks the privacy notice and impact assessment, which makes it a late blocker on the path to the pilot go/no-go.\n\nhttps://jira.example.com/browse/FAM-76",
      "size": 1.32,
      "position": {
        "x": 138.563,
        "y": -51.315640322140084,
        "z": 0
      },
      "images": ["986f2020-9129-4e69-a749-dcb439a35c17"]
    },
    {
      "ID": "FAM-77",
      "name": "Double allowance on 25 October",
      "type": "Bug",
      "properties": {
        "Key": "FAM-77",
        "Status": "Done",
        "Resolution": "Duplicate",
        "Priority": "High",
        "Story points": 0,
        "Team": "Core Backend",
        "Sprint": "Backlog",
        "Sprints carried": "",
        "Assignee": "Grace Liu",
        "Reporter": "Tomás Rivera",
        "Component": "Ledger",
        "Labels": "allowance, dst",
        "Fix version": "",
        "Affects version": "",
        "Created": "2026-10-15T08:50:00",
        "Start": "",
        "Resolved": "2026-10-15T11:20:00",
        "Reopened": "",
        "Due date": "",
        "Timeline date": "2026-10-15T11:20:00",
        "Flagged": false,
        "Flagged since": "",
        "Open blockers": 0,
        "Blocked by other team": false,
        "Late blocker": false,
        "Severity": "",
        "Estimate h": 0,
        "Spent h": 0,
        "Remaining h": 0,
        "Comments": 1,
        "Jira link": "https://jira.example.com/browse/FAM-77"
      },
      "description": "Double allowance on 25 October is a bug Tomás Rivera of Data and Risk filed on 15 October after reconciliation test data showed two allowance payments to the same child on 25 October. It was never estimated or planned into a sprint.\n\nGrace Liu recognised it the same morning as the reopened bug Allowance paid twice when clocks change, the clock-change double payment, and closed it as a duplicate. Its value is the confirmation: the reconciliation data independently shows the problem QA reproduced.\n\nhttps://jira.example.com/browse/FAM-77",
      "size": 0.8,
      "position": {
        "x": 191.04700000000003,
        "y": -51.315640322140084,
        "z": 0
      }
    },
    {
      "ID": "FAM-53",
      "name": "Ledger schema migration",
      "type": "Sub-task",
      "properties": {
        "Key": "FAM-53",
        "Status": "Done",
        "Resolution": "Done",
        "Team": "Core Backend",
        "Sprint": "Sprint 2",
        "Assignee": "Jonas Weber",
        "Created": "2026-09-14T09:40:00",
        "Start": "2026-09-14T10:00:00",
        "Resolved": "2026-09-17T17:00:00",
        "Timeline date": "2026-09-14T10:00:00",
        "Estimate h": 14,
        "Spent h": 11,
        "Remaining h": 0,
        "Jira link": "https://jira.example.com/browse/FAM-53"
      },
      "description": "Ledger schema migration is the first sub-task of the per-child sub-ledger: Jonas Weber changed the core ledger schema so that each child gets a sub-ledger under the guardian's account. He did it between 14 and 17 September, which made the balance query endpoint possible next.\n\nhttps://jira.example.com/browse/FAM-53",
      "size": 0.8,
      "position": {
        "x": 58.44699999999999,
        "y": -48.827640322140084,
        "z": 0
      }
    },
    {
      "ID": "FAM-54",
      "name": "Balance query endpoint",
      "type": "Sub-task",
      "properties": {
        "Key": "FAM-54",
        "Status": "Done",
        "Resolution": "Done",
        "Team": "Core Backend",
        "Sprint": "Sprint 2",
        "Assignee": "Jonas Weber",
        "Created": "2026-09-14T09:45:00",
        "Start": "2026-09-18T09:30:00",
        "Resolved": "2026-09-22T12:00:00",
        "Timeline date": "2026-09-18T09:30:00",
        "Estimate h": 10,
        "Spent h": 14,
        "Remaining h": 0,
        "Jira link": "https://jira.example.com/browse/FAM-54"
      },
      "description": "Balance query endpoint is the second sub-task of the per-child sub-ledger: an endpoint that returns a child's balance and rolls child balances up to the parent account. Jonas Weber built it after the schema migration and finished on 22 September, completing the sub-ledger story two days later.\n\nhttps://jira.example.com/browse/FAM-54",
      "size": 0.8,
      "position": {
        "x": 56.12899999999999,
        "y": -47.9146403221401,
        "z": 0
      }
    },
    {
      "ID": "FAM-60",
      "name": "Child profile form UI",
      "type": "Sub-task",
      "properties": {
        "Key": "FAM-60",
        "Status": "Done",
        "Resolution": "Done",
        "Team": "Mobile",
        "Sprint": "Sprint 4",
        "Assignee": "Kenji Sato",
        "Created": "2026-09-28T11:30:00",
        "Start": "2026-10-06T11:30:00",
        "Resolved": "2026-10-08T17:00:00",
        "Timeline date": "2026-10-06T11:30:00",
        "Estimate h": 12,
        "Spent h": 14.5,
        "Remaining h": 0,
        "Jira link": "https://jira.example.com/browse/FAM-60"
      },
      "description": "Child profile form UI is the sub-task of the add-child flow for the form with name, date of birth and avatar. Kenji Sato built it once the consent API was ready, from 6 to 8 October.\n\nhttps://jira.example.com/browse/FAM-60",
      "size": 0.8,
      "position": {
        "x": 108.91800000000003,
        "y": -72.1360000000001,
        "z": 0
      }
    },
    {
      "ID": "FAM-61",
      "name": "Wire consent capture API",
      "type": "Sub-task",
      "properties": {
        "Key": "FAM-61",
        "Status": "Done",
        "Resolution": "Done",
        "Team": "Mobile",
        "Sprint": "Sprint 4",
        "Assignee": "Kenji Sato",
        "Created": "2026-09-28T11:35:00",
        "Start": "2026-10-07T09:30:00",
        "Resolved": "2026-10-09T16:00:00",
        "Timeline date": "2026-10-07T09:30:00",
        "Estimate h": 10,
        "Spent h": 9,
        "Remaining h": 0,
        "Jira link": "https://jira.example.com/browse/FAM-61"
      },
      "description": "Wire consent capture API is the sub-task of the add-child flow that connects the app to the consent API, so that the guardian's consent is saved with its audit entry. Kenji Sato could only start it after the consent API was done on 6 October and finished it on 9 October.\n\nhttps://jira.example.com/browse/FAM-61",
      "size": 0.8,
      "position": {
        "x": 109.23900000000003,
        "y": -70.3640000000001,
        "z": 0
      }
    },
    {
      "ID": "FAM-62",
      "name": "Analytics events for add child",
      "type": "Sub-task",
      "properties": {
        "Key": "FAM-62",
        "Status": "Done",
        "Resolution": "Done",
        "Team": "Mobile",
        "Sprint": "Sprint 4",
        "Assignee": "Kenji Sato",
        "Created": "2026-09-28T11:40:00",
        "Start": "2026-10-12T09:30:00",
        "Resolved": "2026-10-12T15:00:00",
        "Timeline date": "2026-10-12T09:30:00",
        "Estimate h": 4,
        "Spent h": 4.5,
        "Remaining h": 0,
        "Jira link": "https://jira.example.com/browse/FAM-62"
      },
      "description": "Analytics events for add child is the sub-task of the add-child flow that sends an analytics event for each step of the flow. Kenji Sato did it on 12 October, the last piece before the story closed.\n\nhttps://jira.example.com/browse/FAM-62",
      "size": 0.8,
      "position": {
        "x": 108.13700000000003,
        "y": -68.2490000000001,
        "z": 0
      }
    },
    {
      "ID": "FAM-64",
      "name": "Scheduler job for allowance runs",
      "type": "Sub-task",
      "properties": {
        "Key": "FAM-64",
        "Status": "Done",
        "Resolution": "Done",
        "Team": "Core Backend",
        "Sprint": "Sprint 3",
        "Assignee": "Jonas Weber",
        "Created": "2026-10-05T09:40:00",
        "Start": "2026-10-05T10:00:00",
        "Resolved": "2026-10-07T17:00:00",
        "Timeline date": "2026-10-05T10:00:00",
        "Estimate h": 10,
        "Spent h": 12,
        "Remaining h": 0,
        "Jira link": "https://jira.example.com/browse/FAM-64"
      },
      "description": "Scheduler job for allowance runs is the sub-task of the allowance API for the job that pays allowances at 06:00 local time. Jonas Weber built it from 5 to 7 October; its handling of clock changes later turned out to pay twice, the root of the reopened allowance bug.\n\nhttps://jira.example.com/browse/FAM-64",
      "size": 0.8,
      "position": {
        "x": 89.799,
        "y": -52.19964032214009,
        "z": 0
      }
    },
    {
      "ID": "FAM-65",
      "name": "Allowance schedule endpoints",
      "type": "Sub-task",
      "properties": {
        "Key": "FAM-65",
        "Status": "Done",
        "Resolution": "Done",
        "Team": "Core Backend",
        "Sprint": "Sprint 3",
        "Assignee": "Jonas Weber",
        "Created": "2026-10-05T09:45:00",
        "Start": "2026-10-07T09:30:00",
        "Resolved": "2026-10-08T14:00:00",
        "Timeline date": "2026-10-07T09:30:00",
        "Estimate h": 8,
        "Spent h": 7,
        "Remaining h": 0,
        "Jira link": "https://jira.example.com/browse/FAM-65"
      },
      "description": "Allowance schedule endpoints is the sub-task of the allowance API for creating, changing and pausing schedules. Jonas Weber built it from 7 to 8 October; the set-allowance screen will use these endpoints.\n\nhttps://jira.example.com/browse/FAM-65",
      "size": 0.8,
      "position": {
        "x": 89.64600000000002,
        "y": -50.04364032214009,
        "z": 0
      }
    },
    {
      "ID": "FAM-68",
      "name": "PIN entry and lockout",
      "type": "Sub-task",
      "properties": {
        "Key": "FAM-68",
        "Status": "In Progress",
        "Resolution": "",
        "Team": "Mobile",
        "Sprint": "Sprint 4",
        "Assignee": "Lucía Ferrer",
        "Created": "2026-10-12T10:40:00",
        "Start": "2026-10-12T11:00:00",
        "Resolved": "",
        "Timeline date": "2026-10-12T11:00:00",
        "Estimate h": 12,
        "Spent h": 8.5,
        "Remaining h": 3.5,
        "Jira link": "https://jira.example.com/browse/FAM-68"
      },
      "description": "PIN entry and lockout is the sub-task of the child app sign-in for the four-digit PIN screen with lockout after five wrong attempts. Lucía Ferrer started it on 12 October; it works in the simulator but cannot be tried on a phone until the child app has its own certificates.\n\nhttps://jira.example.com/browse/FAM-68",
      "size": 0.8,
      "position": {
        "x": 112.63000000000002,
        "y": -63.30200000000012,
        "z": 0
      }
    },
    {
      "ID": "FAM-69",
      "name": "Fingerprint sign-in",
      "type": "Sub-task",
      "properties": {
        "Key": "FAM-69",
        "Status": "To Do",
        "Resolution": "",
        "Team": "Mobile",
        "Sprint": "Sprint 4",
        "Assignee": "Lucía Ferrer",
        "Created": "2026-10-12T10:45:00",
        "Start": "",
        "Resolved": "",
        "Timeline date": "2026-10-12T09:00:00",
        "Estimate h": 8,
        "Spent h": 0,
        "Remaining h": 8,
        "Jira link": "https://jira.example.com/browse/FAM-69"
      },
      "description": "Fingerprint sign-in is the optional fingerprint sub-task of the child app sign-in. Lucía Ferrer will do it after the PIN entry, once the child app can be installed on test phones.\n\nhttps://jira.example.com/browse/FAM-69",
      "size": 0.8,
      "position": {
        "x": 114.21200000000002,
        "y": -64.77600000000012,
        "z": 0
      }
    },
    {
      "ID": "FAM-70",
      "name": "Camera capture and edge detection",
      "type": "Sub-task",
      "properties": {
        "Key": "FAM-70",
        "Status": "Done",
        "Resolution": "Done",
        "Team": "Mobile",
        "Sprint": "Sprint 4",
        "Assignee": "Kenji Sato",
        "Created": "2026-10-12T11:10:00",
        "Start": "2026-10-12T11:30:00",
        "Resolved": "2026-10-14T16:00:00",
        "Timeline date": "2026-10-12T11:30:00",
        "Estimate h": 14,
        "Spent h": 17,
        "Remaining h": 0,
        "Jira link": "https://jira.example.com/browse/FAM-70"
      },
      "description": "Camera capture and edge detection is the sub-task of the ID document capture screen for the camera view that finds the document's edges automatically. Kenji Sato finished it on 14 October, so only the upload remains.\n\nhttps://jira.example.com/browse/FAM-70",
      "size": 0.8,
      "position": {
        "x": 118.48100000000002,
        "y": -71.2150000000001,
        "z": 0
      }
    },
    {
      "ID": "FAM-71",
      "name": "Upload image to verification provider",
      "type": "Sub-task",
      "properties": {
        "Key": "FAM-71",
        "Status": "To Do",
        "Resolution": "",
        "Team": "Mobile",
        "Sprint": "Sprint 4",
        "Assignee": "Kenji Sato",
        "Created": "2026-10-12T11:15:00",
        "Start": "",
        "Resolved": "",
        "Timeline date": "2026-10-12T09:00:00",
        "Estimate h": 6,
        "Spent h": 0,
        "Remaining h": 6,
        "Jira link": "https://jira.example.com/browse/FAM-71"
      },
      "description": "Upload image to verification provider is the sub-task of the ID document capture screen that sends the photo to the provider. It cannot start until the provider's sandbox keys arrive with the signed data processing agreement.\n\nhttps://jira.example.com/browse/FAM-71",
      "size": 0.8,
      "position": {
        "x": 118.63400000000001,
        "y": -73.3710000000001,
        "z": 0
      }
    },
    {
      "ID": "FAM-72",
      "name": "Onboarding regression scenarios",
      "type": "Sub-task",
      "properties": {
        "Key": "FAM-72",
        "Status": "To Do",
        "Resolution": "",
        "Team": "QA",
        "Sprint": "Sprint 5",
        "Assignee": "Mateo Rossi",
        "Created": "2026-10-12T15:00:00",
        "Start": "",
        "Resolved": "",
        "Timeline date": "2026-10-26T09:00:00",
        "Estimate h": 12,
        "Spent h": 0,
        "Remaining h": 12,
        "Jira link": "https://jira.example.com/browse/FAM-72"
      },
      "description": "Onboarding regression scenarios is the sub-task of the regression suite covering adding a child and ID capture end to end on real devices. Mateo Rossi will write them in Sprint 5, once those flows are done.\n\nhttps://jira.example.com/browse/FAM-72",
      "size": 0.8,
      "position": {
        "x": 147.67599999999996,
        "y": -90.84350000000043,
        "z": 0
      }
    },
    {
      "ID": "FAM-73",
      "name": "Wallet and allowance scenarios",
      "type": "Sub-task",
      "properties": {
        "Key": "FAM-73",
        "Status": "To Do",
        "Resolution": "",
        "Team": "QA",
        "Sprint": "Sprint 5",
        "Assignee": "Mateo Rossi",
        "Created": "2026-10-12T15:05:00",
        "Start": "",
        "Resolved": "",
        "Timeline date": "2026-10-26T09:00:00",
        "Estimate h": 12,
        "Spent h": 0,
        "Remaining h": 12,
        "Jira link": "https://jira.example.com/browse/FAM-73"
      },
      "description": "Wallet and allowance scenarios is the sub-task of the regression suite covering the wallet home, top-ups and allowance payouts. Mateo Rossi will write them in Sprint 5.\n\nhttps://jira.example.com/browse/FAM-73",
      "size": 0.8,
      "position": {
        "x": 146.74399999999994,
        "y": -88.89350000000043,
        "z": 0
      }
    },
    {
      "ID": "FAM-74",
      "name": "Device farm pipeline in CI",
      "type": "Sub-task",
      "properties": {
        "Key": "FAM-74",
        "Status": "To Do",
        "Resolution": "",
        "Team": "QA",
        "Sprint": "Sprint 5",
        "Assignee": "Grace Liu",
        "Created": "2026-10-12T15:10:00",
        "Start": "",
        "Resolved": "",
        "Timeline date": "2026-10-26T09:00:00",
        "Estimate h": 8,
        "Spent h": 0,
        "Remaining h": 8,
        "Jira link": "https://jira.example.com/browse/FAM-74"
      },
      "description": "Device farm pipeline in CI is the sub-task of the regression suite that runs the tests on booked device farm phones from the build pipeline. Grace Liu will set it up in Sprint 5, using slots booked from 26 October.\n\nhttps://jira.example.com/browse/FAM-74",
      "size": 0.8,
      "position": {
        "x": 144.73299999999998,
        "y": -88.10150000000043,
        "z": 0
      }
    },
    {
      "ID": "FAM-17-c1",
      "name": "Setup wireframes attached",
      "type": "Comment",
      "properties": {
        "Key": "FAM-17",
        "Thread": "1",
        "Reply": false,
        "Author": "Sofia Marino",
        "Author team": "Design/UX",
        "Created": "2026-09-03T14:00:00",
        "Timeline date": "2026-09-03T14:00:00",
        "Jira link": "https://jira.example.com/browse/FAM-17?focusedCommentId=50001"
      },
      "description": "Sofia Marino of Design/UX shared the wireframes for the four family setup steps on 3 September: guardian details, family name, invite and done. It opened the review of the design with the teams that would build it, and Mobile's question about skipping the invite followed.\n\nSofia Marino on 2026-09-03: \"Wireframes for the four setup steps are attached: guardian details, family name, invite, done.\"\n\nhttps://jira.example.com/browse/FAM-17?focusedCommentId=50001",
      "size": 0.6,
      "position": {
        "x": 31.298999999999992,
        "y": -98.28800000000098,
        "z": 0
      }
    },
    {
      "ID": "FAM-17-c1.1",
      "name": "Can the invite be skipped",
      "type": "Comment",
      "properties": {
        "Key": "FAM-17",
        "Thread": "1.1",
        "Reply": true,
        "Author": "Lucía Ferrer",
        "Author team": "Mobile",
        "Created": "2026-09-03T16:20:00",
        "Timeline date": "2026-09-03T16:20:00",
        "Jira link": "https://jira.example.com/browse/FAM-17?focusedCommentId=50002"
      },
      "description": "Lucía Ferrer of Mobile asked whether the co-guardian invite can be skipped and finished later from settings. The design adopted it: the invite step is optional and can be completed from the family settings page, which Web later built with resend and cancel.\n\nLucía Ferrer on 2026-09-03: \"Can the invite step be skipped and finished later from settings?\"\n\nhttps://jira.example.com/browse/FAM-17?focusedCommentId=50002",
      "size": 0.6,
      "position": {
        "x": 30.725060798320563,
        "y": -97.58400000000077,
        "z": 0
      }
    },
    {
      "ID": "FAM-18-c1",
      "name": "Sub-ledger done and way clear",
      "type": "Comment",
      "properties": {
        "Key": "FAM-18",
        "Thread": "1",
        "Reply": false,
        "Author": "Priya Natarajan",
        "Author team": "Product",
        "Created": "2026-09-24T11:30:00",
        "Timeline date": "2026-09-24T11:30:00",
        "Jira link": "https://jira.example.com/browse/FAM-18?focusedCommentId=50026"
      },
      "description": "Priya Natarajan announced on 24 September that the sub-ledger is done, which clears the way for top-up, reconciliation and the allowance API. It marks the moment the project's first bottleneck cleared.\n\nPriya Natarajan on 2026-09-24: \"Done. This clears the way for top-up, reconciliation and the allowance API.\"\n\nhttps://jira.example.com/browse/FAM-18?focusedCommentId=50026",
      "size": 0.6,
      "position": {
        "x": 53.81099999999999,
        "y": -48.827640322140084,
        "z": 0
      }
    },
    {
      "ID": "FAM-20-c1",
      "name": "Joint account breaks group creation",
      "type": "Comment",
      "properties": {
        "Key": "FAM-20",
        "Thread": "1",
        "Reply": false,
        "Author": "Lucía Ferrer",
        "Author team": "Mobile",
        "Created": "2026-09-16T15:10:00",
        "Timeline date": "2026-09-16T15:10:00",
        "Jira link": "https://jira.example.com/browse/FAM-20?focusedCommentId=50003"
      },
      "description": "Lucía Ferrer reported on 16 September that creating a family group fails for her test guardian with a joint account. She filed the bug Family group API rejects guardians with joint accounts for Core Backend and flagged the Create family group screen, starting a five-day wait.\n\nLucía Ferrer on 2026-09-16: \"Creating a group fails for my test guardian with a joint account. Filed 'Family group API rejects guardians with joint accounts' and flagged this story.\"\n\nhttps://jira.example.com/browse/FAM-20?focusedCommentId=50003",
      "size": 0.6,
      "position": {
        "x": 58.29899999999999,
        "y": -67.9860000000001,
        "z": 0
      }
    },
    {
      "ID": "FAM-20-c1.1",
      "name": "API accepts single owners only",
      "type": "Comment",
      "properties": {
        "Key": "FAM-20",
        "Thread": "1.1",
        "Reply": true,
        "Author": "Jonas Weber",
        "Author team": "Core Backend",
        "Created": "2026-09-17T09:15:00",
        "Timeline date": "2026-09-17T09:15:00",
        "Jira link": "https://jira.example.com/browse/FAM-20?focusedCommentId=50004"
      },
      "description": "Jonas Weber of Core Backend confirmed the cause the next morning: the family group API only accepted single-owner accounts as the funding source. That pointed the fix at the funding-account check.\n\nJonas Weber on 2026-09-17: \"Confirmed. The API only accepts single-owner accounts as the funding source.\"\n\nhttps://jira.example.com/browse/FAM-20?focusedCommentId=50004",
      "size": 0.6,
      "position": {
        "x": 59.04699999999999,
        "y": -66.8010000000001,
        "z": 0
      }
    },
    {
      "ID": "FAM-20-c1.2",
      "name": "Fixed in build 0.4.2 and unflagged",
      "type": "Comment",
      "properties": {
        "Key": "FAM-20",
        "Thread": "1.2",
        "Reply": true,
        "Author": "Lucía Ferrer",
        "Author team": "Mobile",
        "Created": "2026-09-21T16:05:00",
        "Timeline date": "2026-09-21T16:05:00",
        "Jira link": "https://jira.example.com/browse/FAM-20?focusedCommentId=50005"
      },
      "description": "On 21 September Lucía reported that the joint-account bug was fixed in build 0.4.2, removed the flag and continued. The screen was done three days later; this is the unblock notice that closes the loop.\n\nLucía Ferrer on 2026-09-21: \"'Family group API rejects guardians with joint accounts' is fixed in build 0.4.2. Unflagged and back in progress.\"\n\nhttps://jira.example.com/browse/FAM-20?focusedCommentId=50005",
      "size": 0.6,
      "position": {
        "x": 57.550999999999995,
        "y": -66.8010000000001,
        "z": 0
      }
    },
    {
      "ID": "FAM-23-c1",
      "name": "Consent rules by age",
      "type": "Comment",
      "properties": {
        "Key": "FAM-23",
        "Thread": "1",
        "Reply": false,
        "Author": "Ines Duarte",
        "Author team": "Security & Compliance",
        "Created": "2026-09-16T10:30:00",
        "Timeline date": "2026-09-16T10:30:00",
        "Jira link": "https://jira.example.com/browse/FAM-23?focusedCommentId=50007"
      },
      "description": "Ines Duarte set the rule on 16 September: under 13 the guardian consents for the child; from 13 to 17 the child also confirms in the app. This became the basis for the consent API and the add-child flow.\n\nInes Duarte on 2026-09-16: \"Under 13 the guardian consents for the child. From 13 to 17 the child also confirms in the app.\"\n\nhttps://jira.example.com/browse/FAM-23?focusedCommentId=50007",
      "size": 0.6,
      "position": {
        "x": 54.189,
        "y": -8.679,
        "z": 0
      }
    },
    {
      "ID": "FAM-23-c1.1",
      "name": "Teen flow needs an extra screen",
      "type": "Comment",
      "properties": {
        "Key": "FAM-23",
        "Thread": "1.1",
        "Reply": true,
        "Author": "Sofia Marino",
        "Author team": "Design/UX",
        "Created": "2026-09-17T09:40:00",
        "Timeline date": "2026-09-17T09:40:00",
        "Jira link": "https://jira.example.com/browse/FAM-23?focusedCommentId=50008"
      },
      "description": "Sofia Marino drew the design consequence: the teen flow needs one extra confirmation screen on the child's phone. That screen was the last piece of the add-child flow in Sprint 4.\n\nSofia Marino on 2026-09-17: \"So the teen flow needs one extra confirmation screen on the child's phone?\"\n\nhttps://jira.example.com/browse/FAM-23?focusedCommentId=50008",
      "size": 0.6,
      "position": {
        "x": 54.189,
        "y": -7.278,
        "z": 0
      }
    },
    {
      "ID": "FAM-24-c1",
      "name": "Picked up while ID capture flagged",
      "type": "Comment",
      "properties": {
        "Key": "FAM-24",
        "Thread": "1",
        "Reply": false,
        "Author": "Kenji Sato",
        "Author team": "Mobile",
        "Created": "2026-10-13T10:05:00",
        "Timeline date": "2026-10-13T10:05:00",
        "Jira link": "https://jira.example.com/browse/FAM-24?focusedCommentId=50027"
      },
      "description": "Kenji Sato noted on 13 October that he picked up the child wallet home screen while his ID capture story is flagged, turning a wait into progress on another pilot flow.\n\nKenji Sato on 2026-10-13: \"Picked this up while 'ID document capture screen' is flagged.\"\n\nhttps://jira.example.com/browse/FAM-24?focusedCommentId=50027",
      "size": 0.6,
      "position": {
        "x": 112.88100000000003,
        "y": -79.8870000000001,
        "z": 0
      }
    },
    {
      "ID": "FAM-26-c1",
      "name": "What a consent record stores",
      "type": "Comment",
      "properties": {
        "Key": "FAM-26",
        "Thread": "1",
        "Reply": false,
        "Author": "Jonas Weber",
        "Author team": "Core Backend",
        "Created": "2026-10-01T11:00:00",
        "Timeline date": "2026-10-01T11:00:00",
        "Jira link": "https://jira.example.com/browse/FAM-26?focusedCommentId=50009"
      },
      "description": "Jonas Weber described the consent record on 1 October: who consented, the wording version, the time and the channel. It invited the privacy check that followed.\n\nJonas Weber on 2026-10-01: \"Each consent record stores who consented, the wording version, the time and the channel.\"\n\nhttps://jira.example.com/browse/FAM-26?focusedCommentId=50009",
      "size": 0.6,
      "position": {
        "x": 80.608,
        "y": -54.1836403221401,
        "z": 0
      }
    },
    {
      "ID": "FAM-26-c1.1",
      "name": "Add the device ID",
      "type": "Comment",
      "properties": {
        "Key": "FAM-26",
        "Thread": "1.1",
        "Reply": true,
        "Author": "Ines Duarte",
        "Author team": "Security & Compliance",
        "Created": "2026-10-02T09:10:00",
        "Timeline date": "2026-10-02T09:10:00",
        "Jira link": "https://jira.example.com/browse/FAM-26?focusedCommentId=50010"
      },
      "description": "Ines Duarte asked to add the device ID so the bank can show which device a consent came from. It was accepted, but the field ended up empty in practice, which surfaced on 13 October as the bug Consent audit log misses device ID.\n\nInes Duarte on 2026-10-02: \"Add the device ID too. We need to show which device a consent came from.\"\n\nhttps://jira.example.com/browse/FAM-26?focusedCommentId=50010",
      "size": 0.6,
      "position": {
        "x": 80.66300000000001,
        "y": -52.783640322140094,
        "z": 0
      }
    },
    {
      "ID": "FAM-26-c1.2",
      "name": "Device ID added to schema",
      "type": "Comment",
      "properties": {
        "Key": "FAM-26",
        "Thread": "1.2",
        "Reply": true,
        "Author": "Jonas Weber",
        "Author team": "Core Backend",
        "Created": "2026-10-02T10:00:00",
        "Timeline date": "2026-10-02T10:00:00",
        "Jira link": "https://jira.example.com/browse/FAM-26?focusedCommentId=50011"
      },
      "description": "Jonas Weber confirmed the device ID was added to the schema. The column existed from then on, but nothing filled it, which the impact assessment review found later.\n\nJonas Weber on 2026-10-02: \"Noted, added to the schema.\"\n\nhttps://jira.example.com/browse/FAM-26?focusedCommentId=50011",
      "size": 0.6,
      "position": {
        "x": 79.368,
        "y": -53.53064032214008,
        "z": 0
      }
    },
    {
      "ID": "FAM-27-c1",
      "name": "Flagged waiting for consent API",
      "type": "Comment",
      "properties": {
        "Key": "FAM-27",
        "Thread": "1",
        "Reply": false,
        "Author": "Kenji Sato",
        "Author team": "Mobile",
        "Created": "2026-09-30T10:20:00",
        "Timeline date": "2026-09-30T10:20:00",
        "Jira link": "https://jira.example.com/browse/FAM-27?focusedCommentId=50012"
      },
      "description": "Kenji Sato flagged the add-child flow on 30 September: the consent API was not ready, so the flow could not save anything. It made the cross-team dependency visible on the board.\n\nKenji Sato on 2026-09-30: \"Flagged. The consent API is not ready, so the flow cannot save anything yet.\"\n\nhttps://jira.example.com/browse/FAM-27?focusedCommentId=50012",
      "size": 0.6,
      "position": {
        "x": 103.50100000000003,
        "y": -68.2500000000001,
        "z": 0
      }
    },
    {
      "ID": "FAM-27-c1.1",
      "name": "Consent API expected 6 October",
      "type": "Comment",
      "properties": {
        "Key": "FAM-27",
        "Thread": "1.1",
        "Reply": true,
        "Author": "Jonas Weber",
        "Author team": "Core Backend",
        "Created": "2026-09-30T11:05:00",
        "Timeline date": "2026-09-30T11:05:00",
        "Jira link": "https://jira.example.com/browse/FAM-27?focusedCommentId=50013"
      },
      "description": "Jonas Weber gave an ETA of 6 October for the consent API, which let Mobile plan around the wait.\n\nJonas Weber on 2026-09-30: \"Expect it on 6 October.\"\n\nhttps://jira.example.com/browse/FAM-27?focusedCommentId=50013",
      "size": 0.6,
      "position": {
        "x": 103.24000000000001,
        "y": -66.8740000000001,
        "z": 0
      }
    },
    {
      "ID": "FAM-27-c1.2",
      "name": "Consent API done and unflagged",
      "type": "Comment",
      "properties": {
        "Key": "FAM-27",
        "Thread": "1.2",
        "Reply": true,
        "Author": "Kenji Sato",
        "Author team": "Mobile",
        "Created": "2026-10-06T11:00:00",
        "Timeline date": "2026-10-06T11:00:00",
        "Jira link": "https://jira.example.com/browse/FAM-27?focusedCommentId=50014"
      },
      "description": "On 6 October Kenji reported the consent API done, removed the flag and started building against it. The add-child flow was finished eight days later.\n\nKenji Sato on 2026-10-06: \"'Consent capture API with audit trail' is done. Unflagged, building against it now.\"\n\nhttps://jira.example.com/browse/FAM-27?focusedCommentId=50014",
      "size": 0.6,
      "position": {
        "x": 102.14700000000002,
        "y": -67.8920000000001,
        "z": 0
      }
    },
    {
      "ID": "FAM-27-c2",
      "name": "Carried over with teen screen left",
      "type": "Comment",
      "properties": {
        "Key": "FAM-27",
        "Thread": "2",
        "Reply": false,
        "Author": "Kenji Sato",
        "Author team": "Mobile",
        "Created": "2026-10-12T09:20:00",
        "Timeline date": "2026-10-12T09:20:00",
        "Jira link": "https://jira.example.com/browse/FAM-27?focusedCommentId=50015"
      },
      "description": "Kenji Sato noted on 12 October that the add-child flow was carried over from Sprint 3 with only the teen confirmation screen left. It closed on 14 October.\n\nKenji Sato on 2026-10-12: \"Carried over from Sprint 3. Only the teen confirmation screen is left.\"\n\nhttps://jira.example.com/browse/FAM-27?focusedCommentId=50015",
      "size": 0.6,
      "position": {
        "x": 103.04500000000002,
        "y": -72.3360000000001,
        "z": 0
      }
    },
    {
      "ID": "FAM-29-c1",
      "name": "Flagged for retention and device ID",
      "type": "Comment",
      "properties": {
        "Key": "FAM-29",
        "Thread": "1",
        "Reply": false,
        "Author": "Ines Duarte",
        "Author team": "Security & Compliance",
        "Created": "2026-10-14T16:00:00",
        "Timeline date": "2026-10-14T16:00:00",
        "Jira link": "https://jira.example.com/browse/FAM-29?focusedCommentId=50051"
      },
      "description": "Ines Duarte flagged the privacy notice on 14 October: it must say how long children's data is kept, from the retention rules, and the consent log must hold the device ID, from the consent-log bug.\n\nInes Duarte on 2026-10-14: \"Flagged. The notice must say how long children's data is kept ('Data retention rules for minors'), and the consent log must hold the device ID ('Consent audit log misses device ID').\"\n\nhttps://jira.example.com/browse/FAM-29?focusedCommentId=50051",
      "size": 0.6,
      "position": {
        "x": 108.708,
        "y": -8.439,
        "z": 0
      }
    },
    {
      "ID": "FAM-29-c1.1",
      "name": "Retention rules in Sprint 5",
      "type": "Comment",
      "properties": {
        "Key": "FAM-29",
        "Thread": "1.1",
        "Reply": true,
        "Author": "Hannah Kowalski",
        "Author team": "Data & Risk",
        "Created": "2026-10-14T16:40:00",
        "Timeline date": "2026-10-14T16:40:00",
        "Jira link": "https://jira.example.com/browse/FAM-29?focusedCommentId=50052"
      },
      "description": "Hannah Kowalski answered that the retention rules are planned for Sprint 5.\n\nHannah Kowalski on 2026-10-14: \"Retention rules are planned for Sprint 5.\"\n\nhttps://jira.example.com/browse/FAM-29?focusedCommentId=50052",
      "size": 0.6,
      "position": {
        "x": 109.456,
        "y": -7.254,
        "z": 0
      }
    },
    {
      "ID": "FAM-29-c1.2",
      "name": "Sign-off moves to Sprint 5",
      "type": "Comment",
      "properties": {
        "Key": "FAM-29",
        "Thread": "1.2",
        "Reply": true,
        "Author": "Ines Duarte",
        "Author team": "Security & Compliance",
        "Created": "2026-10-15T09:20:00",
        "Timeline date": "2026-10-15T09:20:00",
        "Jira link": "https://jira.example.com/browse/FAM-29?focusedCommentId=50053"
      },
      "description": "Ines Duarte concluded on 15 October that sign-off moves to Sprint 5, and the pilot date holds only if both blockers land in its first week.\n\nInes Duarte on 2026-10-15: \"Then sign-off moves to Sprint 5. The pilot date holds only if both land in its first week.\"\n\nhttps://jira.example.com/browse/FAM-29?focusedCommentId=50053",
      "size": 0.6,
      "position": {
        "x": 107.961,
        "y": -7.254,
        "z": 0
      }
    },
    {
      "ID": "FAM-32-c1",
      "name": "Flagged for sandbox keys",
      "type": "Comment",
      "properties": {
        "Key": "FAM-32",
        "Thread": "1",
        "Reply": false,
        "Author": "Kenji Sato",
        "Author team": "Mobile",
        "Created": "2026-10-13T09:40:00",
        "Timeline date": "2026-10-13T09:40:00",
        "Jira link": "https://jira.example.com/browse/FAM-32?focusedCommentId=50020"
      },
      "description": "Kenji Sato flagged the ID capture screen on 13 October: the provider's sandbox keys are pending the data processing agreement, the task Provider sandbox access and data processing agreement. The impediment started here.\n\nKenji Sato on 2026-10-13: \"Flagged. Sandbox keys are pending the data processing agreement in 'Provider sandbox access and data processing agreement'.\"\n\nhttps://jira.example.com/browse/FAM-32?focusedCommentId=50020",
      "size": 0.6,
      "position": {
        "x": 114.73800000000003,
        "y": -69.7430000000001,
        "z": 0
      }
    },
    {
      "ID": "FAM-32-c1.1",
      "name": "Agreement ETA 21 October",
      "type": "Comment",
      "properties": {
        "Key": "FAM-32",
        "Thread": "1.1",
        "Reply": true,
        "Author": "Viktor Nilsson",
        "Author team": "Security & Compliance",
        "Created": "2026-10-13T10:15:00",
        "Timeline date": "2026-10-13T10:15:00",
        "Jira link": "https://jira.example.com/browse/FAM-32?focusedCommentId=50021"
      },
      "description": "Viktor Nilsson of Security and Compliance replied that the agreement is with Legal, with an ETA of 21 October. That date sets how long the screen stays flagged.\n\nViktor Nilsson on 2026-10-13: \"The agreement is with Legal. ETA 21 October.\"\n\nhttps://jira.example.com/browse/FAM-32?focusedCommentId=50021",
      "size": 0.6,
      "position": {
        "x": 114.99900000000002,
        "y": -68.3660000000001,
        "z": 0
      }
    },
    {
      "ID": "FAM-32-c1.2",
      "name": "Pilot risk noted",
      "type": "Comment",
      "properties": {
        "Key": "FAM-32",
        "Thread": "1.2",
        "Reply": true,
        "Author": "Priya Natarajan",
        "Author team": "Product",
        "Created": "2026-10-14T11:00:00",
        "Timeline date": "2026-10-14T11:00:00",
        "Jira link": "https://jira.example.com/browse/FAM-32?focusedCommentId=50022"
      },
      "description": "Priya Natarajan noted the risk to the pilot on the go/no-go task, so the provider agreement is now one of the decision's open risks.\n\nPriya Natarajan on 2026-10-14: \"Risk to the pilot noted on 'Staff pilot go/no-go'.\"\n\nhttps://jira.example.com/browse/FAM-32?focusedCommentId=50022",
      "size": 0.6,
      "position": {
        "x": 113.60900000000001,
        "y": -68.9130000000001,
        "z": 0
      }
    },
    {
      "ID": "FAM-32-c2",
      "name": "Camera done and upload waits",
      "type": "Comment",
      "properties": {
        "Key": "FAM-32",
        "Thread": "2",
        "Reply": false,
        "Author": "Kenji Sato",
        "Author team": "Mobile",
        "Created": "2026-10-14T16:10:00",
        "Timeline date": "2026-10-14T16:10:00",
        "Jira link": "https://jira.example.com/browse/FAM-32?focusedCommentId=50023"
      },
      "description": "Kenji Sato reported on 14 October that camera capture is done and only the upload waits for the keys, narrowing the impediment to one sub-task.\n\nKenji Sato on 2026-10-14: \"Camera capture is done. The upload waits for the keys.\"\n\nhttps://jira.example.com/browse/FAM-32?focusedCommentId=50023",
      "size": 0.6,
      "position": {
        "x": 113.00400000000002,
        "y": -73.3710000000001,
        "z": 0
      }
    },
    {
      "ID": "FAM-35-c1",
      "name": "All five flows needed first",
      "type": "Comment",
      "properties": {
        "Key": "FAM-35",
        "Thread": "1",
        "Reply": false,
        "Author": "Grace Liu",
        "Author team": "QA",
        "Created": "2026-10-12T15:20:00",
        "Timeline date": "2026-10-12T15:20:00",
        "Jira link": "https://jira.example.com/browse/FAM-35?focusedCommentId=50054"
      },
      "description": "Grace Liu set out on 12 October that the suite covers add child, ID capture, wallet home, child sign-in and push, and all five must be done before it runs end to end.\n\nGrace Liu on 2026-10-12: \"The suite covers add child, ID capture, wallet home, child sign-in and push. All five must be done before it runs end to end.\"\n\nhttps://jira.example.com/browse/FAM-35?focusedCommentId=50054",
      "size": 0.6,
      "position": {
        "x": 142.071,
        "y": -89.78050000000043,
        "z": 0
      }
    },
    {
      "ID": "FAM-35-c1.1",
      "name": "Device farm booked from 26 October",
      "type": "Comment",
      "properties": {
        "Key": "FAM-35",
        "Thread": "1.1",
        "Reply": true,
        "Author": "Mateo Rossi",
        "Author team": "QA",
        "Created": "2026-10-13T09:00:00",
        "Timeline date": "2026-10-13T09:00:00",
        "Jira link": "https://jira.example.com/browse/FAM-35?focusedCommentId=50055"
      },
      "description": "Mateo Rossi booked device farm slots from 26 October, the first day of Sprint 5.\n\nMateo Rossi on 2026-10-13: \"Device farm slots booked from 26 October.\"\n\nhttps://jira.example.com/browse/FAM-35?focusedCommentId=50055",
      "size": 0.6,
      "position": {
        "x": 140.807,
        "y": -89.17650000000043,
        "z": 0
      }
    },
    {
      "ID": "FAM-36-c1",
      "name": "Open risks for the pilot",
      "type": "Comment",
      "properties": {
        "Key": "FAM-36",
        "Thread": "1",
        "Reply": false,
        "Author": "Priya Natarajan",
        "Author team": "Product",
        "Created": "2026-10-14T11:40:00",
        "Timeline date": "2026-10-14T11:40:00",
        "Jira link": "https://jira.example.com/browse/FAM-36?focusedCommentId=50056"
      },
      "description": "Priya Natarajan listed the open pilot risks on 14 October: the provider agreement, the reopened allowance bug, the child-app certificates without an owner, and the privacy sign-off waiting on retention rules and the device-ID bug.\n\nPriya Natarajan on 2026-10-14: \"Open risks for the pilot: 'Provider sandbox access and data processing agreement' provider agreement, 'Allowance paid twice when clocks change' reopened, 'App ID, signing and push certificates for child app' without an owner, 'Privacy notice and impact assessment for children's data' waiting on retention rules and 'Consent audit log misses device ID'.\"\n\nhttps://jira.example.com/browse/FAM-36?focusedCommentId=50056",
      "size": 0.6,
      "position": {
        "x": 145.37,
        "y": -22.116999999999948,
        "z": 0
      }
    },
    {
      "ID": "FAM-36-c1.1",
      "name": "Load test comes after decision",
      "type": "Comment",
      "properties": {
        "Key": "FAM-36",
        "Thread": "1.1",
        "Reply": true,
        "Author": "Sam Adeyemi",
        "Author team": "Platform/DevOps",
        "Created": "2026-10-14T13:00:00",
        "Timeline date": "2026-10-14T13:00:00",
        "Jira link": "https://jira.example.com/browse/FAM-36?focusedCommentId=50057"
      },
      "description": "Sam Adeyemi added that the load test is planned for Sprint 6, after the go/no-go decision.\n\nSam Adeyemi on 2026-10-14: \"Also 'Load test wallet endpoints' is planned for Sprint 6, after this decision.\"\n\nhttps://jira.example.com/browse/FAM-36?focusedCommentId=50057",
      "size": 0.6,
      "position": {
        "x": 146.11700000000002,
        "y": -20.931999999999945,
        "z": 0
      }
    },
    {
      "ID": "FAM-36-c1.2",
      "name": "Decide with results or waiver",
      "type": "Comment",
      "properties": {
        "Key": "FAM-36",
        "Thread": "1.2",
        "Reply": true,
        "Author": "Priya Natarajan",
        "Author team": "Product",
        "Created": "2026-10-15T09:45:00",
        "Timeline date": "2026-10-15T09:45:00",
        "Jira link": "https://jira.example.com/browse/FAM-36?focusedCommentId=50058"
      },
      "description": "Priya Natarajan decided on 15 October that the meeting on 4 November goes ahead with what is available: load test results or a written waiver.\n\nPriya Natarajan on 2026-10-15: \"Then we decide on 4 November with what we have: load test results or a written waiver.\"\n\nhttps://jira.example.com/browse/FAM-36?focusedCommentId=50058",
      "size": 0.6,
      "position": {
        "x": 144.622,
        "y": -20.931999999999945,
        "z": 0
      }
    },
    {
      "ID": "FAM-38-c1",
      "name": "Child app cannot be installed",
      "type": "Comment",
      "properties": {
        "Key": "FAM-38",
        "Thread": "1",
        "Reply": false,
        "Author": "Lucía Ferrer",
        "Author team": "Mobile",
        "Created": "2026-10-14T09:50:00",
        "Timeline date": "2026-10-14T09:50:00",
        "Jira link": "https://jira.example.com/browse/FAM-38?focusedCommentId=50018"
      },
      "description": "Lucía Ferrer reported on 14 October that PIN sign-in works in the simulator, but the child app cannot be installed on a test phone without its own app ID, which is the task App ID, signing and push certificates for child app and not in any sprint. It exposed the forgotten dependency as a blocker of current work.\n\nLucía Ferrer on 2026-10-14: \"Sign-in works in the simulator, but the child app cannot be installed on a test phone without its own app ID. That is 'App ID, signing and push certificates for child app', which is not in any sprint.\"\n\nhttps://jira.example.com/browse/FAM-38?focusedCommentId=50018",
      "size": 0.6,
      "position": {
        "x": 109.53900000000002,
        "y": -63.890000000000114,
        "z": 0
      }
    },
    {
      "ID": "FAM-38-c1.1",
      "name": "Raised at stand-up as pilot risk",
      "type": "Comment",
      "properties": {
        "Key": "FAM-38",
        "Thread": "1.1",
        "Reply": true,
        "Author": "Priya Natarajan",
        "Author team": "Product",
        "Created": "2026-10-14T10:30:00",
        "Timeline date": "2026-10-14T10:30:00",
        "Jira link": "https://jira.example.com/browse/FAM-38?focusedCommentId=50019"
      },
      "description": "Priya Natarajan answered that she would raise it at stand-up, since it also blocks the pilot. The certificates task then appeared on the go/no-go risk list.\n\nPriya Natarajan on 2026-10-14: \"Raising it at stand-up. This also blocks the pilot.\"\n\nhttps://jira.example.com/browse/FAM-38?focusedCommentId=50019",
      "size": 0.6,
      "position": {
        "x": 108.584,
        "y": -62.86500000000012,
        "z": 0
      }
    },
    {
      "ID": "FAM-41-c1",
      "name": "When does a change apply",
      "type": "Comment",
      "properties": {
        "Key": "FAM-41",
        "Thread": "1",
        "Reply": false,
        "Author": "Lucía Ferrer",
        "Author team": "Mobile",
        "Created": "2026-10-01T10:00:00",
        "Timeline date": "2026-10-01T10:00:00",
        "Jira link": "https://jira.example.com/browse/FAM-41?focusedCommentId=50028"
      },
      "description": "Lucía Ferrer asked on 1 October whether a change to an allowance applies to the next payout or the one after, a question the mobile screen needed answered.\n\nLucía Ferrer on 2026-10-01: \"Does a change apply to the next payout or the one after?\"\n\nhttps://jira.example.com/browse/FAM-41?focusedCommentId=50028",
      "size": 0.6,
      "position": {
        "x": 82.63799999999996,
        "y": -99.48800000000097,
        "z": 0
      }
    },
    {
      "ID": "FAM-41-c1.1",
      "name": "Next payout if before 18:00",
      "type": "Comment",
      "properties": {
        "Key": "FAM-41",
        "Thread": "1.1",
        "Reply": true,
        "Author": "Arjun Mehta",
        "Author team": "Design/UX",
        "Created": "2026-10-01T11:30:00",
        "Timeline date": "2026-10-01T11:30:00",
        "Jira link": "https://jira.example.com/browse/FAM-41?focusedCommentId=50029"
      },
      "description": "Arjun Mehta answered: to the next payout, if it is made before 18:00 the day before. The rule went into the scheduler design and the API.\n\nArjun Mehta on 2026-10-01: \"To the next payout, if it is made before 18:00 the day before.\"\n\nhttps://jira.example.com/browse/FAM-41?focusedCommentId=50029",
      "size": 0.6,
      "position": {
        "x": 84.70399999999997,
        "y": -99.48800000000097,
        "z": 0
      }
    },
    {
      "ID": "FAM-42-c1",
      "name": "Weekly or monthly and which timezone",
      "type": "Comment",
      "properties": {
        "Key": "FAM-42",
        "Thread": "1",
        "Reply": false,
        "Author": "Jonas Weber",
        "Author team": "Core Backend",
        "Created": "2026-09-29T10:00:00",
        "Timeline date": "2026-09-29T10:00:00",
        "Jira link": "https://jira.example.com/browse/FAM-42?focusedCommentId=50030"
      },
      "description": "Jonas Weber asked on 29 September whether allowances are weekly or monthly and in which timezone they run. The answer shaped the scheduler.\n\nJonas Weber on 2026-09-29: \"Weekly or monthly? And in which timezone does the allowance run?\"\n\nhttps://jira.example.com/browse/FAM-42?focusedCommentId=50030",
      "size": 0.6,
      "position": {
        "x": 85.90299999999999,
        "y": -48.571640322140084,
        "z": 0
      }
    },
    {
      "ID": "FAM-42-c1.1",
      "name": "Both at 06:00 local time",
      "type": "Comment",
      "properties": {
        "Key": "FAM-42",
        "Thread": "1.1",
        "Reply": true,
        "Author": "Priya Natarajan",
        "Author team": "Product",
        "Created": "2026-09-30T09:30:00",
        "Timeline date": "2026-09-30T09:30:00",
        "Jira link": "https://jira.example.com/browse/FAM-42?focusedCommentId=50031"
      },
      "description": "Priya Natarajan decided: both weekly and monthly, paid at 06:00 in the family's local time.\n\nPriya Natarajan on 2026-09-30: \"Both weekly and monthly. Pay at 06:00 in the family's local time.\"\n\nhttps://jira.example.com/browse/FAM-42?focusedCommentId=50031",
      "size": 0.6,
      "position": {
        "x": 86.16400000000002,
        "y": -47.1946403221401,
        "z": 0
      }
    },
    {
      "ID": "FAM-42-c1.2",
      "name": "Decision on UTC plus timezone",
      "type": "Comment",
      "properties": {
        "Key": "FAM-42",
        "Thread": "1.2",
        "Reply": true,
        "Author": "Jonas Weber",
        "Author team": "Core Backend",
        "Created": "2026-09-30T10:15:00",
        "Timeline date": "2026-09-30T10:15:00",
        "Jira link": "https://jira.example.com/browse/FAM-42?focusedCommentId=50032"
      },
      "description": "Jonas Weber recorded the technical decision on 30 September: store the run time in UTC plus the family timezone and compute every next run from the timezone. This decision later led to the double payment at the clock change.\n\nJonas Weber on 2026-09-30: \"Decided: store the run time in UTC plus the family timezone, and compute every next run from the timezone.\"\n\nhttps://jira.example.com/browse/FAM-42?focusedCommentId=50032",
      "size": 0.6,
      "position": {
        "x": 84.774,
        "y": -47.7416403221401,
        "z": 0
      }
    },
    {
      "ID": "FAM-42-c2",
      "name": "Allowance paid twice at clock change",
      "type": "Comment",
      "properties": {
        "Key": "FAM-42",
        "Thread": "2",
        "Reply": false,
        "Author": "Grace Liu",
        "Author team": "QA",
        "Created": "2026-10-09T14:35:00",
        "Timeline date": "2026-10-09T14:35:00",
        "Jira link": "https://jira.example.com/browse/FAM-42?focusedCommentId=50033"
      },
      "description": "Grace Liu of QA pointed on 9 October to the bug Allowance paid twice when clocks change: when the clocks change, the allowance is paid twice. It ties the bug back to the story that caused it.\n\nGrace Liu on 2026-10-09: \"See 'Allowance paid twice when clocks change': when the clocks change, the allowance is paid twice.\"\n\nhttps://jira.example.com/browse/FAM-42?focusedCommentId=50033",
      "size": 0.6,
      "position": {
        "x": 84.16900000000001,
        "y": -52.19964032214009,
        "z": 0
      }
    },
    {
      "ID": "FAM-43-c1",
      "name": "Carried over after feed outage",
      "type": "Comment",
      "properties": {
        "Key": "FAM-43",
        "Thread": "1",
        "Reply": false,
        "Author": "Amara Okafor",
        "Author team": "Core Backend",
        "Created": "2026-10-09T16:00:00",
        "Timeline date": "2026-10-09T16:00:00",
        "Jira link": "https://jira.example.com/browse/FAM-43?focusedCommentId=50042"
      },
      "description": "Amara Okafor noted on 9 October that the event stream was carried over to Sprint 4 because the card processor's test feed was down for two days.\n\nAmara Okafor on 2026-10-09: \"Carried over to Sprint 4. The card processor's test feed was down for two days.\"\n\nhttps://jira.example.com/browse/FAM-43?focusedCommentId=50042",
      "size": 0.6,
      "position": {
        "x": 104.96700000000001,
        "y": -59.86664032214009,
        "z": 0
      }
    },
    {
      "ID": "FAM-43-c2",
      "name": "Three teams wait and raised to Highest",
      "type": "Comment",
      "properties": {
        "Key": "FAM-43",
        "Thread": "2",
        "Reply": false,
        "Author": "Priya Natarajan",
        "Author team": "Product",
        "Created": "2026-10-13T09:50:00",
        "Timeline date": "2026-10-13T09:50:00",
        "Jira link": "https://jira.example.com/browse/FAM-43?focusedCommentId=50043"
      },
      "description": "Priya Natarajan raised the event stream to Highest on 13 October, because three teams wait on it: risk score, push messages and spending categories.\n\nPriya Natarajan on 2026-10-13: \"Three teams wait on this: risk score, push messages and spending categories. Raised to Highest.\"\n\nhttps://jira.example.com/browse/FAM-43?focusedCommentId=50043",
      "size": 0.6,
      "position": {
        "x": 109.148,
        "y": -57.21464032214008,
        "z": 0
      }
    },
    {
      "ID": "FAM-43-c2.1",
      "name": "Consumer split from replay tool",
      "type": "Comment",
      "properties": {
        "Key": "FAM-43",
        "Thread": "2.1",
        "Reply": true,
        "Author": "Amara Okafor",
        "Author team": "Core Backend",
        "Created": "2026-10-13T11:00:00",
        "Timeline date": "2026-10-13T11:00:00",
        "Jira link": "https://jira.example.com/browse/FAM-43?focusedCommentId=50044"
      },
      "description": "Amara Okafor answered by splitting the consumer from the replay tool so the consumer ships first, shortening the wait for the teams downstream.\n\nAmara Okafor on 2026-10-13: \"Understood. Splitting the consumer from the replay tool so the consumer ships first.\"\n\nhttps://jira.example.com/browse/FAM-43?focusedCommentId=50044",
      "size": 0.6,
      "position": {
        "x": 113.88300000000001,
        "y": -58.76864032214008,
        "z": 0
      }
    },
    {
      "ID": "FAM-44-c1",
      "name": "Who owns the push key",
      "type": "Comment",
      "properties": {
        "Key": "FAM-44",
        "Thread": "1",
        "Reply": false,
        "Author": "Lucía Ferrer",
        "Author team": "Mobile",
        "Created": "2026-10-01T15:00:00",
        "Timeline date": "2026-10-01T15:00:00",
        "Jira link": "https://jira.example.com/browse/FAM-44?focusedCommentId=50048"
      },
      "description": "Lucía Ferrer asked on 1 October who owns the push key, since the child app has its own bundle ID. This question uncovered a dependency no team had planned.\n\nLucía Ferrer on 2026-10-01: \"The child app has its own bundle ID. Who owns the push key?\"\n\nhttps://jira.example.com/browse/FAM-44?focusedCommentId=50048",
      "size": 0.6,
      "position": {
        "x": 139.73299999999998,
        "y": -67.9860000000001,
        "z": 0
      }
    },
    {
      "ID": "FAM-44-c1.1",
      "name": "Not on our board and filed",
      "type": "Comment",
      "properties": {
        "Key": "FAM-44",
        "Thread": "1.1",
        "Reply": true,
        "Author": "Sam Adeyemi",
        "Author team": "Platform/DevOps",
        "Created": "2026-10-02T10:10:00",
        "Timeline date": "2026-10-02T10:10:00",
        "Jira link": "https://jira.example.com/browse/FAM-44?focusedCommentId=50049"
      },
      "description": "Sam Adeyemi of Platform/DevOps replied that it was not on their board and filed the task App ID, signing and push certificates for child app.\n\nSam Adeyemi on 2026-10-02: \"Not on our board. Filed 'App ID, signing and push certificates for child app'.\"\n\nhttps://jira.example.com/browse/FAM-44?focusedCommentId=50049",
      "size": 0.6,
      "position": {
        "x": 140.48,
        "y": -66.8010000000001,
        "z": 0
      }
    },
    {
      "ID": "FAM-44-c1.2",
      "name": "Still unassigned",
      "type": "Comment",
      "properties": {
        "Key": "FAM-44",
        "Thread": "1.2",
        "Reply": true,
        "Author": "Lucía Ferrer",
        "Author team": "Mobile",
        "Created": "2026-10-14T09:55:00",
        "Timeline date": "2026-10-14T09:55:00",
        "Jira link": "https://jira.example.com/browse/FAM-44?focusedCommentId=50050"
      },
      "description": "Lucía Ferrer reminded the team on 14 October that the certificates task is still unassigned, and the pilot needs it.\n\nLucía Ferrer on 2026-10-14: \"Still unassigned, and the pilot needs it.\"\n\nhttps://jira.example.com/browse/FAM-44?focusedCommentId=50050",
      "size": 0.6,
      "position": {
        "x": 138.98499999999999,
        "y": -66.8010000000001,
        "z": 0
      }
    },
    {
      "ID": "FAM-48-c1",
      "name": "Score needs live card events",
      "type": "Comment",
      "properties": {
        "Key": "FAM-48",
        "Thread": "1",
        "Reply": false,
        "Author": "Hannah Kowalski",
        "Author team": "Data & Risk",
        "Created": "2026-10-12T10:00:00",
        "Timeline date": "2026-10-12T10:00:00",
        "Jira link": "https://jira.example.com/browse/FAM-48?focusedCommentId=50040"
      },
      "description": "Hannah Kowalski reported on 12 October that the risk score cannot start because it needs live card events from the event stream. It made the bottleneck visible from the waiting side.\n\nHannah Kowalski on 2026-10-12: \"Cannot start: the score needs live card events from 'Card transaction event stream'.\"\n\nhttps://jira.example.com/browse/FAM-48?focusedCommentId=50040",
      "size": 0.6,
      "position": {
        "x": 116.569,
        "y": -32.01198954891429,
        "z": 0
      }
    },
    {
      "ID": "FAM-48-c1.1",
      "name": "Stream ready by 20 October",
      "type": "Comment",
      "properties": {
        "Key": "FAM-48",
        "Thread": "1.1",
        "Reply": true,
        "Author": "Amara Okafor",
        "Author team": "Core Backend",
        "Created": "2026-10-13T10:20:00",
        "Timeline date": "2026-10-13T10:20:00",
        "Jira link": "https://jira.example.com/browse/FAM-48?focusedCommentId=50041"
      },
      "description": "Amara Okafor replied that the event schema is fixed and the stream should be ready by 20 October, giving Data and Risk a date to plan against.\n\nAmara Okafor on 2026-10-13: \"The event schema is fixed. The stream should be ready by 20 October.\"\n\nhttps://jira.example.com/browse/FAM-48?focusedCommentId=50041",
      "size": 0.6,
      "position": {
        "x": 116.569,
        "y": -30.610989548914297,
        "z": 0
      }
    },
    {
      "ID": "FAM-50-c1",
      "name": "Mapping table planned too late",
      "type": "Comment",
      "properties": {
        "Key": "FAM-50",
        "Thread": "1",
        "Reply": false,
        "Author": "Lucía Ferrer",
        "Author team": "Mobile",
        "Created": "2026-10-07T14:00:00",
        "Timeline date": "2026-10-07T14:00:00",
        "Jira link": "https://jira.example.com/browse/FAM-50?focusedCommentId=50045"
      },
      "description": "Lucía Ferrer pointed out on 7 October that the merchant category mapping table is planned for Sprint 6, while this screen starts in Sprint 5, a late blocker.\n\nLucía Ferrer on 2026-10-07: \"The mapping table ('Merchant category mapping table') is planned for Sprint 6, but we start this screen in Sprint 5.\"\n\nhttps://jira.example.com/browse/FAM-50?focusedCommentId=50045",
      "size": 0.6,
      "position": {
        "x": 146.48399999999995,
        "y": -75.9870000000001,
        "z": 0
      }
    },
    {
      "ID": "FAM-50-c1.1",
      "name": "Stub with 12 categories offered",
      "type": "Comment",
      "properties": {
        "Key": "FAM-50",
        "Thread": "1.1",
        "Reply": true,
        "Author": "Tomás Rivera",
        "Author team": "Data & Risk",
        "Created": "2026-10-08T09:30:00",
        "Timeline date": "2026-10-08T09:30:00",
        "Jira link": "https://jira.example.com/browse/FAM-50?focusedCommentId=50046"
      },
      "description": "Tomás Rivera of Data and Risk offered to ship a stub with the 12 categories in Sprint 5, so Mobile is not held up by the full mapping.\n\nTomás Rivera on 2026-10-08: \"We can ship a stub with the 12 categories in Sprint 5.\"\n\nhttps://jira.example.com/browse/FAM-50?focusedCommentId=50046",
      "size": 0.6,
      "position": {
        "x": 147.66899999999995,
        "y": -76.7350000000001,
        "z": 0
      }
    },
    {
      "ID": "FAM-50-c1.2",
      "name": "Stub is enough and confirm in planning",
      "type": "Comment",
      "properties": {
        "Key": "FAM-50",
        "Thread": "1.2",
        "Reply": true,
        "Author": "Lucía Ferrer",
        "Author team": "Mobile",
        "Created": "2026-10-08T10:10:00",
        "Timeline date": "2026-10-08T10:10:00",
        "Jira link": "https://jira.example.com/browse/FAM-50?focusedCommentId=50047"
      },
      "description": "Lucía Ferrer accepted the stub for the screen and asked to confirm it in planning. The thread is still open until Sprint 5 planning.\n\nLucía Ferrer on 2026-10-08: \"A stub is enough for the screen. Please confirm in planning.\"\n\nhttps://jira.example.com/browse/FAM-50?focusedCommentId=50047",
      "size": 0.6,
      "position": {
        "x": 147.66899999999995,
        "y": -75.2400000000001,
        "z": 0
      }
    },
    {
      "ID": "FAM-59-c1",
      "name": "Any signing owner may fund",
      "type": "Comment",
      "properties": {
        "Key": "FAM-59",
        "Thread": "1",
        "Reply": false,
        "Author": "Amara Okafor",
        "Author team": "Core Backend",
        "Created": "2026-09-18T11:00:00",
        "Timeline date": "2026-09-18T11:00:00",
        "Jira link": "https://jira.example.com/browse/FAM-59?focusedCommentId=50006"
      },
      "description": "Amara Okafor explained the fix: joint accounts have two owners in the core system, and the check now accepts any owner who has signed the family terms. The fix was done on 21 September and released the mobile screen.\n\nAmara Okafor on 2026-09-18: \"Joint accounts have two owners in the core system. The check now accepts any owner who has signed the family terms.\"\n\nhttps://jira.example.com/browse/FAM-59?focusedCommentId=50006",
      "size": 0.6,
      "position": {
        "x": 59.249999999999986,
        "y": -56.31564032214008,
        "z": 0
      }
    },
    {
      "ID": "FAM-66-c1",
      "name": "Two clauses on ID images",
      "type": "Comment",
      "properties": {
        "Key": "FAM-66",
        "Thread": "1",
        "Reply": false,
        "Author": "Viktor Nilsson",
        "Author team": "Security & Compliance",
        "Created": "2026-10-12T09:40:00",
        "Timeline date": "2026-10-12T09:40:00",
        "Jira link": "https://jira.example.com/browse/FAM-66?focusedCommentId=50024"
      },
      "description": "Viktor Nilsson reported on 12 October that the provider sent its standard agreement, and two clauses on storing ID images outside the EU need changes. This is why the sandbox keys are delayed.\n\nViktor Nilsson on 2026-10-12: \"The provider sent their standard agreement. Two clauses on storing ID images outside the EU need changes.\"\n\nhttps://jira.example.com/browse/FAM-66?focusedCommentId=50024",
      "size": 0.6,
      "position": {
        "x": 108.829,
        "y": -15.05,
        "z": 0
      }
    },
    {
      "ID": "FAM-66-c1.1",
      "name": "Redline sent back",
      "type": "Comment",
      "properties": {
        "Key": "FAM-66",
        "Thread": "1.1",
        "Reply": true,
        "Author": "Ines Duarte",
        "Author team": "Security & Compliance",
        "Created": "2026-10-14T15:00:00",
        "Timeline date": "2026-10-14T15:00:00",
        "Jira link": "https://jira.example.com/browse/FAM-66?focusedCommentId=50025"
      },
      "description": "Ines Duarte sent the redline back on 14 October; the provider promised an answer by 20 October. The capture screen's unblock date follows from this answer.\n\nInes Duarte on 2026-10-14: \"Redline sent back. They promised an answer by 20 October.\"\n\nhttps://jira.example.com/browse/FAM-66?focusedCommentId=50025",
      "size": 0.6,
      "position": {
        "x": 110.23,
        "y": -15.05,
        "z": 0
      }
    },
    {
      "ID": "FAM-67-c1",
      "name": "Paid at 06:00 and again an hour later",
      "type": "Comment",
      "properties": {
        "Key": "FAM-67",
        "Thread": "1",
        "Reply": false,
        "Author": "Grace Liu",
        "Author team": "QA",
        "Created": "2026-10-09T14:40:00",
        "Timeline date": "2026-10-09T14:40:00",
        "Jira link": "https://jira.example.com/browse/FAM-67?focusedCommentId=50034"
      },
      "description": "Grace Liu reported the bug on 9 October: with the clock moved back one hour the allowance is paid at 06:00 and again an hour later, with a ledger screenshot. It started the bug's first round.\n\nGrace Liu on 2026-10-09: \"With the clock moved back one hour, the allowance is paid at 06:00 and again an hour later. Ledger screenshot attached.\"\n\nhttps://jira.example.com/browse/FAM-67?focusedCommentId=50034",
      "size": 0.6,
      "position": {
        "x": 110.779,
        "y": -50.29764032214008,
        "z": 0
      }
    },
    {
      "ID": "FAM-67-c1.1",
      "name": "Next run used old offset and fixed",
      "type": "Comment",
      "properties": {
        "Key": "FAM-67",
        "Thread": "1.1",
        "Reply": true,
        "Author": "Jonas Weber",
        "Author team": "Core Backend",
        "Created": "2026-10-13T16:35:00",
        "Timeline date": "2026-10-13T16:35:00",
        "Jira link": "https://jira.example.com/browse/FAM-67?focusedCommentId=50035"
      },
      "description": "Jonas Weber explained on 13 October that the next run used the old UTC offset and is now computed from the timezone at every run, and marked the bug fixed. The fix covered only the scheduled run.\n\nJonas Weber on 2026-10-13: \"The next run used the old UTC offset. It is now computed from the timezone at every run. Fixed.\"\n\nhttps://jira.example.com/browse/FAM-67?focusedCommentId=50035",
      "size": 0.6,
      "position": {
        "x": 112.043,
        "y": -49.6936403221401,
        "z": 0
      }
    },
    {
      "ID": "FAM-67-c2",
      "name": "Reopened because catch-up pays again",
      "type": "Comment",
      "properties": {
        "Key": "FAM-67",
        "Thread": "2",
        "Reply": false,
        "Author": "Grace Liu",
        "Author team": "QA",
        "Created": "2026-10-14T10:15:00",
        "Timeline date": "2026-10-14T10:15:00",
        "Jira link": "https://jira.example.com/browse/FAM-67?focusedCommentId=50036"
      },
      "description": "Grace Liu reopened the bug on 14 October: with the staging clock at 25 October 01:59, the catch-up job pays the skipped run a second time. This turned a closed bug back into a pilot blocker.\n\nGrace Liu on 2026-10-14: \"Reopened. With the staging clock at 25 October 01:59, the catch-up job pays the skipped run a second time.\"\n\nhttps://jira.example.com/browse/FAM-67?focusedCommentId=50036",
      "size": 0.6,
      "position": {
        "x": 107.03900000000002,
        "y": -49.5876403221401,
        "z": 0
      }
    },
    {
      "ID": "FAM-67-c2.1",
      "name": "Catch-up job keeps own schedule",
      "type": "Comment",
      "properties": {
        "Key": "FAM-67",
        "Thread": "2.1",
        "Reply": true,
        "Author": "Jonas Weber",
        "Author team": "Core Backend",
        "Created": "2026-10-14T10:50:00",
        "Timeline date": "2026-10-14T10:50:00",
        "Jira link": "https://jira.example.com/browse/FAM-67?focusedCommentId=50037"
      },
      "description": "Jonas Weber agreed: the catch-up job keeps its own copy of the schedule, so he is fixing both payment paths.\n\nJonas Weber on 2026-10-14: \"Right, the catch-up job keeps its own copy of the schedule. Fixing both paths.\"\n\nhttps://jira.example.com/browse/FAM-67?focusedCommentId=50037",
      "size": 0.6,
      "position": {
        "x": 106.77799999999999,
        "y": -48.2116403221401,
        "z": 0
      }
    },
    {
      "ID": "FAM-67-c2.2",
      "name": "Must be fixed before pilot",
      "type": "Comment",
      "properties": {
        "Key": "FAM-67",
        "Thread": "2.2",
        "Reply": true,
        "Author": "Priya Natarajan",
        "Author team": "Product",
        "Created": "2026-10-14T11:30:00",
        "Timeline date": "2026-10-14T11:30:00",
        "Jira link": "https://jira.example.com/browse/FAM-67?focusedCommentId=50038"
      },
      "description": "Priya Natarajan ruled on 14 October that the bug must be fixed before the pilot, flagged the set-allowance screen and added the bug to the go/no-go task. This is where the bug's impact spread to Mobile and the pilot gate.\n\nPriya Natarajan on 2026-10-14: \"This must be fixed before the pilot. Flagged 'Set allowance screen' and added it to 'Staff pilot go/no-go'.\"\n\nhttps://jira.example.com/browse/FAM-67?focusedCommentId=50038",
      "size": 0.6,
      "position": {
        "x": 105.684,
        "y": -49.230640322140104,
        "z": 0
      }
    },
    {
      "ID": "FAM-75-c1",
      "name": "Consent text cut off on 5-inch phones",
      "type": "Comment",
      "properties": {
        "Key": "FAM-75",
        "Thread": "1",
        "Reply": false,
        "Author": "Mateo Rossi",
        "Author team": "QA",
        "Created": "2026-10-13T13:45:00",
        "Timeline date": "2026-10-13T13:45:00",
        "Jira link": "https://jira.example.com/browse/FAM-75?focusedCommentId=50016"
      },
      "description": "Mateo Rossi of QA reported on 13 October that on 5-inch Android phones the consent text is cut off and the confirm button hidden, with a screenshot. It opened the bug against the newly finished add-child flow.\n\nMateo Rossi on 2026-10-13: \"On 5-inch Android phones the consent text is cut off and the confirm button is hidden. Screenshot attached.\"\n\nhttps://jira.example.com/browse/FAM-75?focusedCommentId=50016",
      "size": 0.6,
      "position": {
        "x": 115.93900000000002,
        "y": -76.9870000000001,
        "z": 0
      }
    },
    {
      "ID": "FAM-75-c1.1",
      "name": "Text scrolls and button pinned",
      "type": "Comment",
      "properties": {
        "Key": "FAM-75",
        "Thread": "1.1",
        "Reply": true,
        "Author": "Kenji Sato",
        "Author team": "Mobile",
        "Created": "2026-10-15T10:30:00",
        "Timeline date": "2026-10-15T10:30:00",
        "Jira link": "https://jira.example.com/browse/FAM-75?focusedCommentId=50017"
      },
      "description": "Kenji Sato fixed it on 15 October: the text now scrolls and the confirm button stays pinned. The bug moved into review.\n\nKenji Sato on 2026-10-15: \"The text now scrolls and the button stays pinned. In review.\"\n\nhttps://jira.example.com/browse/FAM-75?focusedCommentId=50017",
      "size": 0.6,
      "position": {
        "x": 117.34000000000003,
        "y": -76.9870000000001,
        "z": 0
      }
    },
    {
      "ID": "FAM-76-c1",
      "name": "Device ID column empty",
      "type": "Comment",
      "properties": {
        "Key": "FAM-76",
        "Thread": "1",
        "Reply": false,
        "Author": "Ines Duarte",
        "Author team": "Security & Compliance",
        "Created": "2026-10-13T15:20:00",
        "Timeline date": "2026-10-13T15:20:00",
        "Jira link": "https://jira.example.com/browse/FAM-76?focusedCommentId=50059"
      },
      "description": "Ines Duarte found during the impact assessment review on 13 October that consent records have an empty device ID column, and filed the bug that now blocks the privacy sign-off.\n\nInes Duarte on 2026-10-13: \"Found in the impact assessment review: consent records have an empty device ID column.\"\n\nhttps://jira.example.com/browse/FAM-76?focusedCommentId=50059",
      "size": 0.6,
      "position": {
        "x": 138.563,
        "y": -49.1946403221401,
        "z": 0
      }
    },
    {
      "ID": "FAM-77-c1",
      "name": "Closed as duplicate",
      "type": "Comment",
      "properties": {
        "Key": "FAM-77",
        "Thread": "1",
        "Reply": false,
        "Author": "Grace Liu",
        "Author team": "QA",
        "Created": "2026-10-15T11:20:00",
        "Timeline date": "2026-10-15T11:20:00",
        "Jira link": "https://jira.example.com/browse/FAM-77?focusedCommentId=50039"
      },
      "description": "Grace Liu closed the reconciliation report on 15 October as a duplicate of the reopened clock-change bug, keeping one place for the fix.\n\nGrace Liu on 2026-10-15: \"Same as 'Allowance paid twice when clocks change'. Closing as duplicate.\"\n\nhttps://jira.example.com/browse/FAM-77?focusedCommentId=50039",
      "size": 0.6,
      "position": {
        "x": 191.04700000000003,
        "y": -49.714640322140085,
        "z": 0
      }
    },
    {
      "ID": "AX-Backlog",
      "name": "Backlog",
      "type": "Sprint",
      "properties": {
        "Sprint": "Backlog",
        "Sprint state": "",
        "Start date": "",
        "End date": "",
        "Sprint goal": "",
        "Issues": 2,
        "Story points committed": 0,
        "Story points completed": 0
      },
      "description": "The Backlog holds work that is not planned into any sprint. Right now one open item sits there: the task App ID, signing and push certificates for child app. Sam Adeyemi filed it on 2 October after Mobile asked who owns the push key, but nobody owns it and it has no estimate.\n\nThat matters because the child app cannot be installed on test phones or receive push messages without it. It already blocks the child app PIN sign-in in Sprint 4 and the push notification in Sprint 5, and Priya Natarajan listed it among the open risks for the staff pilot go/no-go.\n\nThe Backlog also keeps the bug Double allowance on 25 October, which Data & Risk filed on 15 October from reconciliation test data. It was never planned into a sprint: QA recognised it the same morning as the reopened clock-change bug and closed it as a duplicate, which confirmed the problem from a second source.",
      "size": [24, 6],
      "position": {
        "x": 191.107,
        "y": 3.8,
        "z": 0
      }
    },
    {
      "ID": "AX-Lane-CoreBackend",
      "name": "Core Backend",
      "type": "Team",
      "properties": {
        "Team": "Core Backend",
        "Team code": "BE",
        "Member count": 2,
        "Members": "Jonas Weber, Amara Okafor",
        "Issues": 14,
        "Open issues": 5,
        "Flagged issues": 0,
        "Story points committed": 67,
        "Story points completed": 41
      },
      "description": "The Core Backend team builds the server side of the Family Wallet on the bank's core ledger. It owns the family group data model and API, the sub-ledger per child, guardian top-ups, the consent capture API with audit trail, the ID verification integration, the allowance schedule API, the card transaction event stream and the limit rules engine. It has the most issues of any team, and every app screen and notification depends on its APIs.",
      "size": [15.873655589372213, 15.694359677859861],
      "position": {
        "x": -8.059999999999999,
        "y": -50.415640322140085,
        "z": 0
      }
    },
    {
      "ID": "AX-Lane-DataRisk",
      "name": "Data & Risk",
      "type": "Team",
      "properties": {
        "Team": "Data & Risk",
        "Team code": "DATA",
        "Member count": 2,
        "Members": "Hannah Kowalski, Tomás Rivera",
        "Issues": 4,
        "Open issues": 4,
        "Flagged issues": 0,
        "Story points committed": 19,
        "Story points completed": 0
      },
      "description": "The Data & Risk team supplies the rules and models behind spending. It owns the data retention rules for minors, the risk score for child card payments, the spending categories model and the merchant category mapping table. Most of its work feeds the 1.1 Public Launch, where guardians block merchant categories and see spending insights, so these items depend on its models being ready.",
      "size": [15.88522156709892, 8.49800034265855],
      "position": {
        "x": -8.059999999999999,
        "y": -36.76298954891429,
        "z": 0
      }
    },
    {
      "ID": "AX-Lane-DesignUX",
      "name": "Design/UX",
      "type": "Team",
      "properties": {
        "Team": "Design/UX",
        "Team code": "UX",
        "Member count": 2,
        "Members": "Sofia Marino, Arjun Mehta",
        "Issues": 4,
        "Open issues": 1,
        "Flagged issues": 0,
        "Story points committed": 11,
        "Story points completed": 8
      },
      "description": "The Design/UX team shapes how the Family Wallet looks and reads for guardians and children. It owns the family setup flow design, the allowance scheduler design, the notification copy and templates and the insights dashboard design. Its designs come first in each feature, so Mobile and Web can build from them. Three of its four items are done; the insights dashboard design remains for the 1.1 Public Launch.",
      "size": [16, 11.582],
      "position": {
        "x": -8.059999999999999,
        "y": -101.77800000000096,
        "z": 0
      }
    },
    {
      "ID": "AX-Lane-Mobile",
      "name": "Mobile",
      "type": "Team",
      "properties": {
        "Team": "Mobile",
        "Team code": "MOB",
        "Member count": 2,
        "Members": "Lucía Ferrer, Kenji Sato",
        "Issues": 10,
        "Open issues": 8,
        "Flagged issues": 2,
        "Story points committed": 53,
        "Story points completed": 13
      },
      "description": "The Mobile team builds the Family Wallet apps that guardians and children hold in their hands. It owns the create family group screen, the add child profile flow, ID document capture, the child wallet home screen, PIN and fingerprint sign-in, the allowance and merchant-block screens, push notifications on child spending and the insights screen. The app is what the staff pilot users actually experience.",
      "size": [16, 24.633],
      "position": {
        "x": -8.059999999999999,
        "y": -72.4710000000001,
        "z": 0
      }
    },
    {
      "ID": "AX-Lane-PlatformDevOps",
      "name": "Platform/DevOps",
      "type": "Team",
      "properties": {
        "Team": "Platform/DevOps",
        "Team code": "OPS",
        "Member count": 2,
        "Members": "Sam Adeyemi, Freya Larsen",
        "Issues": 6,
        "Open issues": 5,
        "Flagged issues": 0,
        "Story points committed": 12,
        "Story points completed": 2
      },
      "description": "The Platform/DevOps team runs the infrastructure the Family Wallet ships on. It owns the staff-pilot feature flag, monitoring dashboards and alerts, the load test of the wallet endpoints, the nightly ledger reconciliation job and the staff pilot go/no-go. It also holds the child app's App ID, signing and push certificates, the one task nobody planned. Without this team's work the 1.0 Staff Pilot cannot be switched on, watched or rolled back.",
      "size": [15.848475333264851, 11.089206705619791],
      "position": {
        "x": -8.059999999999999,
        "y": -24.442999999999856,
        "z": 0
      }
    },
    {
      "ID": "AX-Lane-QA",
      "name": "QA",
      "type": "Team",
      "properties": {
        "Team": "QA",
        "Team code": "QA",
        "Member count": 2,
        "Members": "Grace Liu, Mateo Rossi",
        "Issues": 1,
        "Open issues": 1,
        "Flagged issues": 0,
        "Story points committed": 5,
        "Story points completed": 0
      },
      "description": "The QA team checks that the Family Wallet works end to end before real families use it. It owns the end-to-end regression suite for family flows, with scenarios for onboarding and for the wallet and allowances, and the device farm pipeline in CI. All of its work is still to do and sits in the run-up to the 1.0 Staff Pilot, where it is the last check before release.",
      "size": [16, 7.351],
      "position": {
        "x": -8.059999999999999,
        "y": -90.67750000000042,
        "z": 0
      }
    },
    {
      "ID": "AX-Lane-SecurityCompliance",
      "name": "Security & Compliance",
      "type": "Team",
      "properties": {
        "Team": "Security & Compliance",
        "Team code": "SEC",
        "Member count": 2,
        "Members": "Ines Duarte, Viktor Nilsson",
        "Issues": 4,
        "Open issues": 3,
        "Flagged issues": 1,
        "Story points committed": 12,
        "Story points completed": 2
      },
      "description": "The Security & Compliance team makes sure the Family Wallet can legally and safely handle children's money and data. It owns the parental consent wording and age rules, the privacy notice and impact assessment for children's data, the penetration test of the family endpoints, and the provider sandbox access and data processing agreement. Its sign-offs gate the 1.0 Staff Pilot, because the bank cannot let staff families use real money until consent, privacy and security are cleared.",
      "size": [15.967878403358835, 12.084788094579379],
      "position": {
        "x": -8.059999999999999,
        "y": -9.945999999999998,
        "z": 0
      }
    },
    {
      "ID": "AX-Lane-Web",
      "name": "Web",
      "type": "Team",
      "properties": {
        "Team": "Web",
        "Team code": "WEB",
        "Member count": 2,
        "Members": "Noah Fischer, Elif Demir",
        "Issues": 5,
        "Open issues": 4,
        "Flagged issues": 0,
        "Story points committed": 17,
        "Story points completed": 3
      },
      "description": "The Web team builds the browser side of the Family Wallet. It owns the family settings page, the wallet overview, the notification preferences, the limits page for guardians and the manual review queue for failed ID checks. Guardians manage settings and limits there, and staff use the review queue to resolve checks that failed during onboarding.",
      "size": [16, 9.91],
      "position": {
        "x": -8.059999999999999,
        "y": -113.8309999999992,
        "z": 0
      }
    },
    {
      "ID": "AX-Sprint1",
      "name": "Sprint 1",
      "type": "Sprint",
      "properties": {
        "Sprint": "Sprint 1",
        "Sprint state": "Closed",
        "Start date": "2026-08-31T09:00:00",
        "End date": "2026-09-11T17:00:00",
        "Sprint goal": "Family group foundations and the setup design",
        "Issues": 2,
        "Story points committed": 8,
        "Story points completed": 8
      },
      "description": "Sprint 1 ran from 31 August to 11 September 2026 and opened the Family Wallet build with one goal: family group foundations and the setup design. Nothing else could start before the bank knew what a family group is and how a guardian would set one up.\n\nTwo stories carried the sprint. Sofia Marino of Design/UX finished the family setup flow on 4 September, after sharing wireframes for the four setup steps and answering Mobile's question whether the invite could be skipped. Jonas Weber of Core Backend finished the family group data model and API on 10 September: one or two guardians, up to six children and the guardian account that funds the wallets.\n\nThe sprint closed with everything it committed done, and together the two stories unblocked the mobile Create family group screen. It also left a hidden assumption behind: the API accepted only single-owner funding accounts, which surfaced as a bug in the next sprint.",
      "size": [24, 6],
      "position": {
        "x": 31.189,
        "y": 3.8,
        "z": 0
      }
    },
    {
      "ID": "AX-Sprint2",
      "name": "Sprint 2",
      "type": "Sprint",
      "properties": {
        "Sprint": "Sprint 2",
        "Sprint state": "Closed",
        "Start date": "2026-09-14T09:00:00",
        "End date": "2026-09-25T17:00:00",
        "Sprint goal": "Family group in the app; sub-ledger; consent rules",
        "Issues": 5,
        "Story points committed": 20,
        "Story points completed": 17
      },
      "description": "Sprint 2 ran from 14 to 25 September 2026 with the goal of putting the family group into the app, giving each child a sub-ledger and settling the consent rules. It built directly on the API and design finished in Sprint 1.\n\nJonas Weber migrated the core ledger schema and added a balance query endpoint, so each child got a sub-ledger under the guardian's account by 24 September. Security & Compliance fixed the parental consent wording and age rules on 22 September. When Mobile tested the Create family group screen with a joint funding account on 16 September, it failed with a server error; Amara Okafor fixed the bug Family group API rejects guardians with joint accounts on 21 September, and the screen was done three days later.\n\nOne story slipped: Invite co-guardian by link only started on 21 September and was carried over into Sprint 3. The rest of the commitment was done, and the sub-ledger made the top-up, the wallet screens and the nightly reconciliation job possible.",
      "size": [24, 6],
      "position": {
        "x": 56.189,
        "y": 3.8,
        "z": 0
      }
    },
    {
      "ID": "AX-Sprint3",
      "name": "Sprint 3",
      "type": "Sprint",
      "properties": {
        "Sprint": "Sprint 3",
        "Sprint state": "Closed",
        "Start date": "2026-09-28T09:00:00",
        "End date": "2026-10-09T17:00:00",
        "Sprint goal": "Consent API, ID verification, top-up; ship 0.9 Foundations",
        "Issues": 11,
        "Story points committed": 49,
        "Story points completed": 36
      },
      "description": "Sprint 3 ran from 28 September to 9 October 2026 with the goal of delivering the consent API, the ID verification integration and guardian top-ups, and of shipping release 0.9 Foundations. It was the busiest sprint so far, with Core Backend carrying most of the load.\n\nThe co-guardian invite closed on 30 September and unblocked the web family settings page. The add child profile flow was flagged on 30 September because the consent API was not ready; Core Backend delivered that API on 6 October as promised and the flag came off the same morning. Top-up, the ID verification provider, the allowance schedule API, the allowance scheduler design, the notification copy and the staff-pilot feature flag were all finished. On 1 October Mobile asked who owns the child app's push key, which turned up a certificates task nobody had planned. On 9 October QA filed the bug that allowances are paid twice when the clocks change.\n\nRelease 0.9 Foundations shipped on 9 October behind the staff feature flag: family groups, co-guardian invites, sub-ledger and top-up. Two stories were carried over into Sprint 4: the add child profile flow, with only the teen confirmation left, and the card transaction event stream, after the card processor's test feed was down for two days.",
      "size": [24, 6],
      "position": {
        "x": 81.189,
        "y": 3.8,
        "z": 0
      }
    },
    {
      "ID": "AX-Sprint4",
      "name": "Sprint 4",
      "type": "Sprint",
      "properties": {
        "Sprint": "Sprint 4",
        "Sprint state": "Active",
        "Start date": "2026-10-12T09:00:00",
        "End date": "2026-10-23T17:00:00",
        "Sprint goal": "Child onboarding complete, wallet screens, event stream",
        "Issues": 13,
        "Story points committed": 57,
        "Story points completed": 8
      },
      "description": "Sprint 4 runs from 12 to 23 October 2026 and is the active sprint. Its goal is to complete child onboarding, build the wallet screens and deliver the card transaction event stream, so that the staff pilot can be prepared in Sprint 5.\n\nThe add child profile flow was done on 14 October, and testing it on a small phone exposed the bug Consent screen cut off on small Android screens, now in review. Elsewhere the sprint is under pressure. The event stream became the project's bottleneck: on 13 October its priority was raised to Highest because the risk score, the push notification and the spending categories model all wait on it, with a new expected date of 20 October. The ID document capture screen was flagged on 13 October until the provider's data processing agreement is signed. On 14 October the double-allowance bug was reopened because the catch-up job still pays a skipped run twice; the set allowance screen was flagged and the bug went onto the pilot go/no-go list, with 23 October as the deadline before the clocks change on 25 October. The same day the privacy notice was flagged, which moves its sign-off into Sprint 5, and the child app PIN sign-in stalled on the unowned app certificates.\n\nBy mid-sprint only a small share of the committed points is done. Whatever is not finished by 23 October lands on Sprint 5, the sprint that has to deliver the staff pilot.",
      "size": [29.631, 6],
      "position": {
        "x": 109.004,
        "y": 3.8,
        "z": 0
      }
    },
    {
      "ID": "AX-Sprint5",
      "name": "Sprint 5",
      "type": "Sprint",
      "properties": {
        "Sprint": "Sprint 5",
        "Sprint state": "Future",
        "Start date": "2026-10-26T09:00:00",
        "End date": "2026-11-06T17:00:00",
        "Sprint goal": "Pilot readiness: regression, pen test, push; ship 1.0 Staff Pilot",
        "Issues": 13,
        "Story points committed": 58,
        "Story points completed": 0
      },
      "description": "Sprint 5 runs from 26 October to 6 November 2026 and has not started. Its goal is pilot readiness: the end-to-end regression suite, the penetration test and the push notification, ending with release 1.0 Staff Pilot for 200 employee families on 6 November.\n\nThe plan is tight. QA's regression suite needs five Mobile flows done before it can run end to end, and some of those are still blocked by other teams. The external penetration test is booked for 27 to 30 October. The privacy sign-off moved into this sprint because it waits on the data retention rules for minors and the fix for the consent audit log that misses the device ID, so both have to land in the first week. The push notification also needs the card event stream and the child app certificates that nobody owns yet. The sprint also starts the 1.1 work that sits behind the event stream, above all the 13-point limit rules engine.\n\nThe sprint ends in the staff pilot go/no-go on 4 November, where every dependency chain in the project meets. Because the load test is planned for the sprint after, Priya Natarajan decided that the meeting goes ahead with load test results if available or with a written waiver.",
      "size": [28.287, 6],
      "position": {
        "x": 138.963,
        "y": 3.8,
        "z": 0
      }
    },
    {
      "ID": "AX-Sprint6",
      "name": "Sprint 6",
      "type": "Sprint",
      "properties": {
        "Sprint": "Sprint 6",
        "Sprint state": "Future",
        "Start date": "2026-11-09T09:00:00",
        "End date": "2026-11-20T17:00:00",
        "Sprint goal": "Spending limits and insights for 1.1 Public Launch",
        "Issues": 5,
        "Story points committed": 20,
        "Story points completed": 0
      },
      "description": "Sprint 6 runs from 9 to 20 November 2026 and has not started. Its goal is spending limits and insights for release 1.1 Public Launch on 27 November, when the Family Wallet opens to all customers.\n\nIt holds the guardian-facing results of the spending work: the web limits page, the insights screen in the app, the weekly family summary email that reuses the spending categories, and the merchant category mapping table. It also holds the load test of the wallet endpoints, a staff-pilot task that ended up after the go/no-go it should inform.\n\nThe sprint depends on a chain that is still open: the card transaction event stream feeds the risk score, the risk score feeds the limit rules engine, and the limit screens can only be finished once the engine is done. Any delay in that chain in Sprints 4 and 5 lands here, directly before the public launch.",
      "size": [24, 6],
      "position": {
        "x": 166.107,
        "y": 3.8,
        "z": 0
      }
    }
  ],
  "links": [
    {
      "node1": "FAM-1",
      "node2": "FAM-2",
      "name1": "is part of",
      "name2": "includes",
      "direction": 1,
      "properties": {
        "Link type": "parent",
        "Relation": "composition",
        "Cross team": false,
        "Unblocked": ""
      }
    },
    {
      "node1": "FAM-1",
      "node2": "FAM-3",
      "name1": "is part of",
      "name2": "includes",
      "direction": 1,
      "properties": {
        "Link type": "parent",
        "Relation": "composition",
        "Cross team": false,
        "Unblocked": ""
      }
    },
    {
      "node1": "FAM-1",
      "node2": "FAM-4",
      "name1": "is part of",
      "name2": "includes",
      "direction": 1,
      "properties": {
        "Link type": "parent",
        "Relation": "composition",
        "Cross team": false,
        "Unblocked": ""
      }
    },
    {
      "node1": "FAM-1",
      "node2": "FAM-5",
      "name1": "is part of",
      "name2": "includes",
      "direction": 1,
      "properties": {
        "Link type": "parent",
        "Relation": "composition",
        "Cross team": false,
        "Unblocked": ""
      }
    },
    {
      "node1": "FAM-2",
      "node2": "FAM-6",
      "name1": "is part of",
      "name2": "includes",
      "direction": 1,
      "properties": {
        "Link type": "parent",
        "Relation": "composition",
        "Cross team": false,
        "Unblocked": ""
      }
    },
    {
      "node1": "FAM-2",
      "node2": "FAM-7",
      "name1": "is part of",
      "name2": "includes",
      "direction": 1,
      "properties": {
        "Link type": "parent",
        "Relation": "composition",
        "Cross team": false,
        "Unblocked": ""
      }
    },
    {
      "node1": "FAM-2",
      "node2": "FAM-8",
      "name1": "is part of",
      "name2": "includes",
      "direction": 1,
      "properties": {
        "Link type": "parent",
        "Relation": "composition",
        "Cross team": false,
        "Unblocked": ""
      }
    },
    {
      "node1": "FAM-3",
      "node2": "FAM-9",
      "name1": "is part of",
      "name2": "includes",
      "direction": 1,
      "properties": {
        "Link type": "parent",
        "Relation": "composition",
        "Cross team": false,
        "Unblocked": ""
      }
    },
    {
      "node1": "FAM-3",
      "node2": "FAM-10",
      "name1": "is part of",
      "name2": "includes",
      "direction": 1,
      "properties": {
        "Link type": "parent",
        "Relation": "composition",
        "Cross team": false,
        "Unblocked": ""
      }
    },
    {
      "node1": "FAM-3",
      "node2": "FAM-11",
      "name1": "is part of",
      "name2": "includes",
      "direction": 1,
      "properties": {
        "Link type": "parent",
        "Relation": "composition",
        "Cross team": false,
        "Unblocked": ""
      }
    },
    {
      "node1": "FAM-4",
      "node2": "FAM-12",
      "name1": "is part of",
      "name2": "includes",
      "direction": 1,
      "properties": {
        "Link type": "parent",
        "Relation": "composition",
        "Cross team": false,
        "Unblocked": ""
      }
    },
    {
      "node1": "FAM-4",
      "node2": "FAM-13",
      "name1": "is part of",
      "name2": "includes",
      "direction": 1,
      "properties": {
        "Link type": "parent",
        "Relation": "composition",
        "Cross team": false,
        "Unblocked": ""
      }
    },
    {
      "node1": "FAM-5",
      "node2": "FAM-14",
      "name1": "is part of",
      "name2": "includes",
      "direction": 1,
      "properties": {
        "Link type": "parent",
        "Relation": "composition",
        "Cross team": false,
        "Unblocked": ""
      }
    },
    {
      "node1": "FAM-5",
      "node2": "FAM-15",
      "name1": "is part of",
      "name2": "includes",
      "direction": 1,
      "properties": {
        "Link type": "parent",
        "Relation": "composition",
        "Cross team": false,
        "Unblocked": ""
      }
    },
    {
      "node1": "FAM-6",
      "node2": "FAM-16",
      "name1": "is part of",
      "name2": "includes",
      "direction": 1,
      "properties": {
        "Link type": "parent",
        "Relation": "composition",
        "Cross team": false,
        "Unblocked": ""
      }
    },
    {
      "node1": "FAM-6",
      "node2": "FAM-17",
      "name1": "is part of",
      "name2": "includes",
      "direction": 1,
      "properties": {
        "Link type": "parent",
        "Relation": "composition",
        "Cross team": false,
        "Unblocked": ""
      }
    },
    {
      "node1": "FAM-9",
      "node2": "FAM-18",
      "name1": "is part of",
      "name2": "includes",
      "direction": 1,
      "properties": {
        "Link type": "parent",
        "Relation": "composition",
        "Cross team": false,
        "Unblocked": ""
      }
    },
    {
      "node1": "FAM-9",
      "node2": "FAM-19",
      "name1": "is part of",
      "name2": "includes",
      "direction": 1,
      "properties": {
        "Link type": "parent",
        "Relation": "composition",
        "Cross team": false,
        "Unblocked": ""
      }
    },
    {
      "node1": "FAM-6",
      "node2": "FAM-20",
      "name1": "is part of",
      "name2": "includes",
      "direction": 1,
      "properties": {
        "Link type": "parent",
        "Relation": "composition",
        "Cross team": false,
        "Unblocked": ""
      }
    },
    {
      "node1": "FAM-6",
      "node2": "FAM-21",
      "name1": "is part of",
      "name2": "includes",
      "direction": 1,
      "properties": {
        "Link type": "parent",
        "Relation": "composition",
        "Cross team": false,
        "Unblocked": ""
      }
    },
    {
      "node1": "FAM-6",
      "node2": "FAM-22",
      "name1": "is part of",
      "name2": "includes",
      "direction": 1,
      "properties": {
        "Link type": "parent",
        "Relation": "composition",
        "Cross team": false,
        "Unblocked": ""
      }
    },
    {
      "node1": "FAM-7",
      "node2": "FAM-23",
      "name1": "is part of",
      "name2": "includes",
      "direction": 1,
      "properties": {
        "Link type": "parent",
        "Relation": "composition",
        "Cross team": false,
        "Unblocked": ""
      }
    },
    {
      "node1": "FAM-9",
      "node2": "FAM-24",
      "name1": "is part of",
      "name2": "includes",
      "direction": 1,
      "properties": {
        "Link type": "parent",
        "Relation": "composition",
        "Cross team": false,
        "Unblocked": ""
      }
    },
    {
      "node1": "FAM-9",
      "node2": "FAM-25",
      "name1": "is part of",
      "name2": "includes",
      "direction": 1,
      "properties": {
        "Link type": "parent",
        "Relation": "composition",
        "Cross team": false,
        "Unblocked": ""
      }
    },
    {
      "node1": "FAM-7",
      "node2": "FAM-26",
      "name1": "is part of",
      "name2": "includes",
      "direction": 1,
      "properties": {
        "Link type": "parent",
        "Relation": "composition",
        "Cross team": false,
        "Unblocked": ""
      }
    },
    {
      "node1": "FAM-7",
      "node2": "FAM-27",
      "name1": "is part of",
      "name2": "includes",
      "direction": 1,
      "properties": {
        "Link type": "parent",
        "Relation": "composition",
        "Cross team": false,
        "Unblocked": ""
      }
    },
    {
      "node1": "FAM-8",
      "node2": "FAM-28",
      "name1": "is part of",
      "name2": "includes",
      "direction": 1,
      "properties": {
        "Link type": "parent",
        "Relation": "composition",
        "Cross team": false,
        "Unblocked": ""
      }
    },
    {
      "node1": "FAM-14",
      "node2": "FAM-29",
      "name1": "is part of",
      "name2": "includes",
      "direction": 1,
      "properties": {
        "Link type": "parent",
        "Relation": "composition",
        "Cross team": false,
        "Unblocked": ""
      }
    },
    {
      "node1": "FAM-14",
      "node2": "FAM-30",
      "name1": "is part of",
      "name2": "includes",
      "direction": 1,
      "properties": {
        "Link type": "parent",
        "Relation": "composition",
        "Cross team": false,
        "Unblocked": ""
      }
    },
    {
      "node1": "FAM-14",
      "node2": "FAM-31",
      "name1": "is part of",
      "name2": "includes",
      "direction": 1,
      "properties": {
        "Link type": "parent",
        "Relation": "composition",
        "Cross team": false,
        "Unblocked": ""
      }
    },
    {
      "node1": "FAM-8",
      "node2": "FAM-32",
      "name1": "is part of",
      "name2": "includes",
      "direction": 1,
      "properties": {
        "Link type": "parent",
        "Relation": "composition",
        "Cross team": false,
        "Unblocked": ""
      }
    },
    {
      "node1": "FAM-15",
      "node2": "FAM-33",
      "name1": "is part of",
      "name2": "includes",
      "direction": 1,
      "properties": {
        "Link type": "parent",
        "Relation": "composition",
        "Cross team": false,
        "Unblocked": ""
      }
    },
    {
      "node1": "FAM-15",
      "node2": "FAM-34",
      "name1": "is part of",
      "name2": "includes",
      "direction": 1,
      "properties": {
        "Link type": "parent",
        "Relation": "composition",
        "Cross team": false,
        "Unblocked": ""
      }
    },
    {
      "node1": "FAM-15",
      "node2": "FAM-35",
      "name1": "is part of",
      "name2": "includes",
      "direction": 1,
      "properties": {
        "Link type": "parent",
        "Relation": "composition",
        "Cross team": false,
        "Unblocked": ""
      }
    },
    {
      "node1": "FAM-15",
      "node2": "FAM-36",
      "name1": "is part of",
      "name2": "includes",
      "direction": 1,
      "properties": {
        "Link type": "parent",
        "Relation": "composition",
        "Cross team": false,
        "Unblocked": ""
      }
    },
    {
      "node1": "FAM-15",
      "node2": "FAM-37",
      "name1": "is part of",
      "name2": "includes",
      "direction": 1,
      "properties": {
        "Link type": "parent",
        "Relation": "composition",
        "Cross team": false,
        "Unblocked": ""
      }
    },
    {
      "node1": "FAM-7",
      "node2": "FAM-38",
      "name1": "is part of",
      "name2": "includes",
      "direction": 1,
      "properties": {
        "Link type": "parent",
        "Relation": "composition",
        "Cross team": false,
        "Unblocked": ""
      }
    },
    {
      "node1": "FAM-8",
      "node2": "FAM-39",
      "name1": "is part of",
      "name2": "includes",
      "direction": 1,
      "properties": {
        "Link type": "parent",
        "Relation": "composition",
        "Cross team": false,
        "Unblocked": ""
      }
    },
    {
      "node1": "FAM-9",
      "node2": "FAM-40",
      "name1": "is part of",
      "name2": "includes",
      "direction": 1,
      "properties": {
        "Link type": "parent",
        "Relation": "composition",
        "Cross team": false,
        "Unblocked": ""
      }
    },
    {
      "node1": "FAM-10",
      "node2": "FAM-41",
      "name1": "is part of",
      "name2": "includes",
      "direction": 1,
      "properties": {
        "Link type": "parent",
        "Relation": "composition",
        "Cross team": false,
        "Unblocked": ""
      }
    },
    {
      "node1": "FAM-10",
      "node2": "FAM-42",
      "name1": "is part of",
      "name2": "includes",
      "direction": 1,
      "properties": {
        "Link type": "parent",
        "Relation": "composition",
        "Cross team": false,
        "Unblocked": ""
      }
    },
    {
      "node1": "FAM-12",
      "node2": "FAM-43",
      "name1": "is part of",
      "name2": "includes",
      "direction": 1,
      "properties": {
        "Link type": "parent",
        "Relation": "composition",
        "Cross team": false,
        "Unblocked": ""
      }
    },
    {
      "node1": "FAM-12",
      "node2": "FAM-44",
      "name1": "is part of",
      "name2": "includes",
      "direction": 1,
      "properties": {
        "Link type": "parent",
        "Relation": "composition",
        "Cross team": false,
        "Unblocked": ""
      }
    },
    {
      "node1": "FAM-12",
      "node2": "FAM-45",
      "name1": "is part of",
      "name2": "includes",
      "direction": 1,
      "properties": {
        "Link type": "parent",
        "Relation": "composition",
        "Cross team": false,
        "Unblocked": ""
      }
    },
    {
      "node1": "FAM-12",
      "node2": "FAM-46",
      "name1": "is part of",
      "name2": "includes",
      "direction": 1,
      "properties": {
        "Link type": "parent",
        "Relation": "composition",
        "Cross team": false,
        "Unblocked": ""
      }
    },
    {
      "node1": "FAM-10",
      "node2": "FAM-47",
      "name1": "is part of",
      "name2": "includes",
      "direction": 1,
      "properties": {
        "Link type": "parent",
        "Relation": "composition",
        "Cross team": false,
        "Unblocked": ""
      }
    },
    {
      "node1": "FAM-11",
      "node2": "FAM-48",
      "name1": "is part of",
      "name2": "includes",
      "direction": 1,
      "properties": {
        "Link type": "parent",
        "Relation": "composition",
        "Cross team": false,
        "Unblocked": ""
      }
    },
    {
      "node1": "FAM-11",
      "node2": "FAM-49",
      "name1": "is part of",
      "name2": "includes",
      "direction": 1,
      "properties": {
        "Link type": "parent",
        "Relation": "composition",
        "Cross team": false,
        "Unblocked": ""
      }
    },
    {
      "node1": "FAM-11",
      "node2": "FAM-50",
      "name1": "is part of",
      "name2": "includes",
      "direction": 1,
      "properties": {
        "Link type": "parent",
        "Relation": "composition",
        "Cross team": false,
        "Unblocked": ""
      }
    },
    {
      "node1": "FAM-11",
      "node2": "FAM-51",
      "name1": "is part of",
      "name2": "includes",
      "direction": 1,
      "properties": {
        "Link type": "parent",
        "Relation": "composition",
        "Cross team": false,
        "Unblocked": ""
      }
    },
    {
      "node1": "FAM-11",
      "node2": "FAM-52",
      "name1": "is part of",
      "name2": "includes",
      "direction": 1,
      "properties": {
        "Link type": "parent",
        "Relation": "composition",
        "Cross team": false,
        "Unblocked": ""
      }
    },
    {
      "node1": "FAM-18",
      "node2": "FAM-53",
      "name1": "is part of",
      "name2": "includes",
      "direction": 1,
      "properties": {
        "Link type": "parent",
        "Relation": "composition",
        "Cross team": false,
        "Unblocked": ""
      }
    },
    {
      "node1": "FAM-18",
      "node2": "FAM-54",
      "name1": "is part of",
      "name2": "includes",
      "direction": 1,
      "properties": {
        "Link type": "parent",
        "Relation": "composition",
        "Cross team": false,
        "Unblocked": ""
      }
    },
    {
      "node1": "FAM-13",
      "node2": "FAM-55",
      "name1": "is part of",
      "name2": "includes",
      "direction": 1,
      "properties": {
        "Link type": "parent",
        "Relation": "composition",
        "Cross team": false,
        "Unblocked": ""
      }
    },
    {
      "node1": "FAM-13",
      "node2": "FAM-56",
      "name1": "is part of",
      "name2": "includes",
      "direction": 1,
      "properties": {
        "Link type": "parent",
        "Relation": "composition",
        "Cross team": false,
        "Unblocked": ""
      }
    },
    {
      "node1": "FAM-13",
      "node2": "FAM-57",
      "name1": "is part of",
      "name2": "includes",
      "direction": 1,
      "properties": {
        "Link type": "parent",
        "Relation": "composition",
        "Cross team": false,
        "Unblocked": ""
      }
    },
    {
      "node1": "FAM-13",
      "node2": "FAM-58",
      "name1": "is part of",
      "name2": "includes",
      "direction": 1,
      "properties": {
        "Link type": "parent",
        "Relation": "composition",
        "Cross team": false,
        "Unblocked": ""
      }
    },
    {
      "node1": "FAM-6",
      "node2": "FAM-59",
      "name1": "is part of",
      "name2": "includes",
      "direction": 1,
      "properties": {
        "Link type": "parent",
        "Relation": "composition",
        "Cross team": false,
        "Unblocked": ""
      }
    },
    {
      "node1": "FAM-27",
      "node2": "FAM-60",
      "name1": "is part of",
      "name2": "includes",
      "direction": 1,
      "properties": {
        "Link type": "parent",
        "Relation": "composition",
        "Cross team": false,
        "Unblocked": ""
      }
    },
    {
      "node1": "FAM-27",
      "node2": "FAM-61",
      "name1": "is part of",
      "name2": "includes",
      "direction": 1,
      "properties": {
        "Link type": "parent",
        "Relation": "composition",
        "Cross team": false,
        "Unblocked": ""
      }
    },
    {
      "node1": "FAM-27",
      "node2": "FAM-62",
      "name1": "is part of",
      "name2": "includes",
      "direction": 1,
      "properties": {
        "Link type": "parent",
        "Relation": "composition",
        "Cross team": false,
        "Unblocked": ""
      }
    },
    {
      "node1": "FAM-12",
      "node2": "FAM-63",
      "name1": "is part of",
      "name2": "includes",
      "direction": 1,
      "properties": {
        "Link type": "parent",
        "Relation": "composition",
        "Cross team": false,
        "Unblocked": ""
      }
    },
    {
      "node1": "FAM-42",
      "node2": "FAM-64",
      "name1": "is part of",
      "name2": "includes",
      "direction": 1,
      "properties": {
        "Link type": "parent",
        "Relation": "composition",
        "Cross team": false,
        "Unblocked": ""
      }
    },
    {
      "node1": "FAM-42",
      "node2": "FAM-65",
      "name1": "is part of",
      "name2": "includes",
      "direction": 1,
      "properties": {
        "Link type": "parent",
        "Relation": "composition",
        "Cross team": false,
        "Unblocked": ""
      }
    },
    {
      "node1": "FAM-8",
      "node2": "FAM-66",
      "name1": "is part of",
      "name2": "includes",
      "direction": 1,
      "properties": {
        "Link type": "parent",
        "Relation": "composition",
        "Cross team": false,
        "Unblocked": ""
      }
    },
    {
      "node1": "FAM-10",
      "node2": "FAM-67",
      "name1": "is part of",
      "name2": "includes",
      "direction": 1,
      "properties": {
        "Link type": "parent",
        "Relation": "composition",
        "Cross team": false,
        "Unblocked": ""
      }
    },
    {
      "node1": "FAM-38",
      "node2": "FAM-68",
      "name1": "is part of",
      "name2": "includes",
      "direction": 1,
      "properties": {
        "Link type": "parent",
        "Relation": "composition",
        "Cross team": false,
        "Unblocked": ""
      }
    },
    {
      "node1": "FAM-38",
      "node2": "FAM-69",
      "name1": "is part of",
      "name2": "includes",
      "direction": 1,
      "properties": {
        "Link type": "parent",
        "Relation": "composition",
        "Cross team": false,
        "Unblocked": ""
      }
    },
    {
      "node1": "FAM-32",
      "node2": "FAM-70",
      "name1": "is part of",
      "name2": "includes",
      "direction": 1,
      "properties": {
        "Link type": "parent",
        "Relation": "composition",
        "Cross team": false,
        "Unblocked": ""
      }
    },
    {
      "node1": "FAM-32",
      "node2": "FAM-71",
      "name1": "is part of",
      "name2": "includes",
      "direction": 1,
      "properties": {
        "Link type": "parent",
        "Relation": "composition",
        "Cross team": false,
        "Unblocked": ""
      }
    },
    {
      "node1": "FAM-35",
      "node2": "FAM-72",
      "name1": "is part of",
      "name2": "includes",
      "direction": 1,
      "properties": {
        "Link type": "parent",
        "Relation": "composition",
        "Cross team": false,
        "Unblocked": ""
      }
    },
    {
      "node1": "FAM-35",
      "node2": "FAM-73",
      "name1": "is part of",
      "name2": "includes",
      "direction": 1,
      "properties": {
        "Link type": "parent",
        "Relation": "composition",
        "Cross team": false,
        "Unblocked": ""
      }
    },
    {
      "node1": "FAM-35",
      "node2": "FAM-74",
      "name1": "is part of",
      "name2": "includes",
      "direction": 1,
      "properties": {
        "Link type": "parent",
        "Relation": "composition",
        "Cross team": false,
        "Unblocked": ""
      }
    },
    {
      "node1": "FAM-7",
      "node2": "FAM-75",
      "name1": "is part of",
      "name2": "includes",
      "direction": 1,
      "properties": {
        "Link type": "parent",
        "Relation": "composition",
        "Cross team": false,
        "Unblocked": ""
      }
    },
    {
      "node1": "FAM-14",
      "node2": "FAM-76",
      "name1": "is part of",
      "name2": "includes",
      "direction": 1,
      "properties": {
        "Link type": "parent",
        "Relation": "composition",
        "Cross team": false,
        "Unblocked": ""
      }
    },
    {
      "node1": "FAM-10",
      "node2": "FAM-77",
      "name1": "is part of",
      "name2": "includes",
      "direction": 1,
      "properties": {
        "Link type": "parent",
        "Relation": "composition",
        "Cross team": false,
        "Unblocked": ""
      }
    },
    {
      "node1": "FAM-17",
      "node2": "FAM-20",
      "name1": "is blocked by",
      "name2": "blocks",
      "direction": 1,
      "properties": {
        "Link type": "blocks",
        "Relation": "dependency",
        "Cross team": true,
        "Unblocked": "2026-09-14T10:00:00"
      }
    },
    {
      "node1": "FAM-17",
      "node2": "FAM-22",
      "name1": "is blocked by",
      "name2": "blocks",
      "direction": 1,
      "properties": {
        "Link type": "blocks",
        "Relation": "dependency",
        "Cross team": true,
        "Unblocked": "2026-10-01T09:30:00"
      }
    },
    {
      "node1": "FAM-16",
      "node2": "FAM-20",
      "name1": "is blocked by",
      "name2": "blocks",
      "direction": 1,
      "properties": {
        "Link type": "blocks",
        "Relation": "dependency",
        "Cross team": true,
        "Unblocked": "2026-09-14T10:00:00"
      }
    },
    {
      "node1": "FAM-59",
      "node2": "FAM-20",
      "name1": "is blocked by",
      "name2": "blocks",
      "direction": 1,
      "properties": {
        "Link type": "blocks",
        "Relation": "dependency",
        "Cross team": true,
        "Unblocked": "2026-09-21T16:05:00"
      }
    },
    {
      "node1": "FAM-21",
      "node2": "FAM-22",
      "name1": "is blocked by",
      "name2": "blocks",
      "direction": 1,
      "properties": {
        "Link type": "blocks",
        "Relation": "dependency",
        "Cross team": true,
        "Unblocked": "2026-10-01T09:30:00"
      }
    },
    {
      "node1": "FAM-23",
      "node2": "FAM-26",
      "name1": "is blocked by",
      "name2": "blocks",
      "direction": 1,
      "properties": {
        "Link type": "blocks",
        "Relation": "dependency",
        "Cross team": true,
        "Unblocked": "2026-09-28T10:00:00"
      }
    },
    {
      "node1": "FAM-26",
      "node2": "FAM-27",
      "name1": "is blocked by",
      "name2": "blocks",
      "direction": 1,
      "properties": {
        "Link type": "blocks",
        "Relation": "dependency",
        "Cross team": true,
        "Unblocked": "2026-10-06T11:00:00"
      }
    },
    {
      "node1": "FAM-27",
      "node2": "FAM-35",
      "name1": "is blocked by",
      "name2": "blocks",
      "direction": 1,
      "properties": {
        "Link type": "blocks",
        "Relation": "dependency",
        "Cross team": true,
        "Unblocked": "2026-10-14T11:15:00"
      }
    },
    {
      "node1": "FAM-28",
      "node2": "FAM-32",
      "name1": "is blocked by",
      "name2": "blocks",
      "direction": 1,
      "properties": {
        "Link type": "blocks",
        "Relation": "dependency",
        "Cross team": true,
        "Unblocked": "2026-10-12T11:00:00"
      }
    },
    {
      "node1": "FAM-66",
      "node2": "FAM-32",
      "name1": "is blocked by",
      "name2": "blocks",
      "direction": 1,
      "properties": {
        "Link type": "blocks",
        "Relation": "dependency",
        "Cross team": true,
        "Unblocked": ""
      }
    },
    {
      "node1": "FAM-28",
      "node2": "FAM-39",
      "name1": "is blocked by",
      "name2": "blocks",
      "direction": 1,
      "properties": {
        "Link type": "blocks",
        "Relation": "dependency",
        "Cross team": true,
        "Unblocked": "2026-10-08T17:00:00"
      }
    },
    {
      "node1": "FAM-32",
      "node2": "FAM-35",
      "name1": "is blocked by",
      "name2": "blocks",
      "direction": 1,
      "properties": {
        "Link type": "blocks",
        "Relation": "dependency",
        "Cross team": true,
        "Unblocked": ""
      }
    },
    {
      "node1": "FAM-18",
      "node2": "FAM-19",
      "name1": "is blocked by",
      "name2": "blocks",
      "direction": 1,
      "properties": {
        "Link type": "blocks",
        "Relation": "dependency",
        "Cross team": false,
        "Unblocked": "2026-09-28T09:30:00"
      }
    },
    {
      "node1": "FAM-18",
      "node2": "FAM-40",
      "name1": "is blocked by",
      "name2": "blocks",
      "direction": 1,
      "properties": {
        "Link type": "blocks",
        "Relation": "dependency",
        "Cross team": true,
        "Unblocked": "2026-09-24T11:00:00"
      }
    },
    {
      "node1": "FAM-18",
      "node2": "FAM-42",
      "name1": "is blocked by",
      "name2": "blocks",
      "direction": 1,
      "properties": {
        "Link type": "blocks",
        "Relation": "dependency",
        "Cross team": false,
        "Unblocked": "2026-10-05T09:30:00"
      }
    },
    {
      "node1": "FAM-19",
      "node2": "FAM-24",
      "name1": "is blocked by",
      "name2": "blocks",
      "direction": 1,
      "properties": {
        "Link type": "blocks",
        "Relation": "dependency",
        "Cross team": true,
        "Unblocked": "2026-10-13T10:00:00"
      }
    },
    {
      "node1": "FAM-19",
      "node2": "FAM-25",
      "name1": "is blocked by",
      "name2": "blocks",
      "direction": 1,
      "properties": {
        "Link type": "blocks",
        "Relation": "dependency",
        "Cross team": true,
        "Unblocked": "2026-10-13T09:30:00"
      }
    },
    {
      "node1": "FAM-24",
      "node2": "FAM-35",
      "name1": "is blocked by",
      "name2": "blocks",
      "direction": 1,
      "properties": {
        "Link type": "blocks",
        "Relation": "dependency",
        "Cross team": true,
        "Unblocked": ""
      }
    },
    {
      "node1": "FAM-41",
      "node2": "FAM-42",
      "name1": "is blocked by",
      "name2": "blocks",
      "direction": 1,
      "properties": {
        "Link type": "blocks",
        "Relation": "dependency",
        "Cross team": true,
        "Unblocked": "2026-10-05T09:30:00"
      }
    },
    {
      "node1": "FAM-41",
      "node2": "FAM-47",
      "name1": "is blocked by",
      "name2": "blocks",
      "direction": 1,
      "properties": {
        "Link type": "blocks",
        "Relation": "dependency",
        "Cross team": true,
        "Unblocked": "2026-10-02T16:00:00"
      }
    },
    {
      "node1": "FAM-42",
      "node2": "FAM-47",
      "name1": "is blocked by",
      "name2": "blocks",
      "direction": 1,
      "properties": {
        "Link type": "blocks",
        "Relation": "dependency",
        "Cross team": true,
        "Unblocked": "2026-10-09T12:00:00"
      }
    },
    {
      "node1": "FAM-67",
      "node2": "FAM-47",
      "name1": "is blocked by",
      "name2": "blocks",
      "direction": 1,
      "properties": {
        "Link type": "blocks",
        "Relation": "dependency",
        "Cross team": true,
        "Unblocked": ""
      }
    },
    {
      "node1": "FAM-67",
      "node2": "FAM-36",
      "name1": "is blocked by",
      "name2": "blocks",
      "direction": 1,
      "properties": {
        "Link type": "blocks",
        "Relation": "dependency",
        "Cross team": true,
        "Unblocked": ""
      }
    },
    {
      "node1": "FAM-43",
      "node2": "FAM-48",
      "name1": "is blocked by",
      "name2": "blocks",
      "direction": 1,
      "properties": {
        "Link type": "blocks",
        "Relation": "dependency",
        "Cross team": true,
        "Unblocked": ""
      }
    },
    {
      "node1": "FAM-48",
      "node2": "FAM-49",
      "name1": "is blocked by",
      "name2": "blocks",
      "direction": 1,
      "properties": {
        "Link type": "blocks",
        "Relation": "dependency",
        "Cross team": true,
        "Unblocked": ""
      }
    },
    {
      "node1": "FAM-49",
      "node2": "FAM-50",
      "name1": "is blocked by",
      "name2": "blocks",
      "direction": 1,
      "properties": {
        "Link type": "blocks",
        "Relation": "dependency",
        "Cross team": true,
        "Unblocked": ""
      }
    },
    {
      "node1": "FAM-51",
      "node2": "FAM-50",
      "name1": "is blocked by",
      "name2": "blocks",
      "direction": 1,
      "properties": {
        "Link type": "blocks",
        "Relation": "dependency",
        "Cross team": true,
        "Unblocked": ""
      }
    },
    {
      "node1": "FAM-49",
      "node2": "FAM-52",
      "name1": "is blocked by",
      "name2": "blocks",
      "direction": 1,
      "properties": {
        "Link type": "blocks",
        "Relation": "dependency",
        "Cross team": true,
        "Unblocked": ""
      }
    },
    {
      "node1": "FAM-43",
      "node2": "FAM-55",
      "name1": "is blocked by",
      "name2": "blocks",
      "direction": 1,
      "properties": {
        "Link type": "blocks",
        "Relation": "dependency",
        "Cross team": true,
        "Unblocked": ""
      }
    },
    {
      "node1": "FAM-55",
      "node2": "FAM-57",
      "name1": "is blocked by",
      "name2": "blocks",
      "direction": 1,
      "properties": {
        "Link type": "blocks",
        "Relation": "dependency",
        "Cross team": true,
        "Unblocked": ""
      }
    },
    {
      "node1": "FAM-56",
      "node2": "FAM-57",
      "name1": "is blocked by",
      "name2": "blocks",
      "direction": 1,
      "properties": {
        "Link type": "blocks",
        "Relation": "dependency",
        "Cross team": true,
        "Unblocked": ""
      }
    },
    {
      "node1": "FAM-43",
      "node2": "FAM-44",
      "name1": "is blocked by",
      "name2": "blocks",
      "direction": 1,
      "properties": {
        "Link type": "blocks",
        "Relation": "dependency",
        "Cross team": true,
        "Unblocked": ""
      }
    },
    {
      "node1": "FAM-46",
      "node2": "FAM-44",
      "name1": "is blocked by",
      "name2": "blocks",
      "direction": 1,
      "properties": {
        "Link type": "blocks",
        "Relation": "dependency",
        "Cross team": true,
        "Unblocked": "2026-10-07T15:30:00"
      }
    },
    {
      "node1": "FAM-46",
      "node2": "FAM-45",
      "name1": "is blocked by",
      "name2": "blocks",
      "direction": 1,
      "properties": {
        "Link type": "blocks",
        "Relation": "dependency",
        "Cross team": true,
        "Unblocked": "2026-10-07T15:30:00"
      }
    },
    {
      "node1": "FAM-63",
      "node2": "FAM-44",
      "name1": "is blocked by",
      "name2": "blocks",
      "direction": 1,
      "properties": {
        "Link type": "blocks",
        "Relation": "dependency",
        "Cross team": true,
        "Unblocked": ""
      }
    },
    {
      "node1": "FAM-63",
      "node2": "FAM-38",
      "name1": "is blocked by",
      "name2": "blocks",
      "direction": 1,
      "properties": {
        "Link type": "blocks",
        "Relation": "dependency",
        "Cross team": true,
        "Unblocked": ""
      }
    },
    {
      "node1": "FAM-44",
      "node2": "FAM-35",
      "name1": "is blocked by",
      "name2": "blocks",
      "direction": 1,
      "properties": {
        "Link type": "blocks",
        "Relation": "dependency",
        "Cross team": true,
        "Unblocked": ""
      }
    },
    {
      "node1": "FAM-38",
      "node2": "FAM-35",
      "name1": "is blocked by",
      "name2": "blocks",
      "direction": 1,
      "properties": {
        "Link type": "blocks",
        "Relation": "dependency",
        "Cross team": true,
        "Unblocked": ""
      }
    },
    {
      "node1": "FAM-76",
      "node2": "FAM-29",
      "name1": "is blocked by",
      "name2": "blocks",
      "direction": 1,
      "properties": {
        "Link type": "blocks",
        "Relation": "dependency",
        "Cross team": true,
        "Unblocked": ""
      }
    },
    {
      "node1": "FAM-31",
      "node2": "FAM-29",
      "name1": "is blocked by",
      "name2": "blocks",
      "direction": 1,
      "properties": {
        "Link type": "blocks",
        "Relation": "dependency",
        "Cross team": true,
        "Unblocked": ""
      }
    },
    {
      "node1": "FAM-29",
      "node2": "FAM-36",
      "name1": "is blocked by",
      "name2": "blocks",
      "direction": 1,
      "properties": {
        "Link type": "blocks",
        "Relation": "dependency",
        "Cross team": true,
        "Unblocked": ""
      }
    },
    {
      "node1": "FAM-30",
      "node2": "FAM-36",
      "name1": "is blocked by",
      "name2": "blocks",
      "direction": 1,
      "properties": {
        "Link type": "blocks",
        "Relation": "dependency",
        "Cross team": true,
        "Unblocked": ""
      }
    },
    {
      "node1": "FAM-37",
      "node2": "FAM-36",
      "name1": "is blocked by",
      "name2": "blocks",
      "direction": 1,
      "properties": {
        "Link type": "blocks",
        "Relation": "dependency",
        "Cross team": false,
        "Unblocked": ""
      }
    },
    {
      "node1": "FAM-33",
      "node2": "FAM-36",
      "name1": "is blocked by",
      "name2": "blocks",
      "direction": 1,
      "properties": {
        "Link type": "blocks",
        "Relation": "dependency",
        "Cross team": false,
        "Unblocked": "2026-10-08T11:30:00"
      }
    },
    {
      "node1": "FAM-35",
      "node2": "FAM-36",
      "name1": "is blocked by",
      "name2": "blocks",
      "direction": 1,
      "properties": {
        "Link type": "blocks",
        "Relation": "dependency",
        "Cross team": true,
        "Unblocked": ""
      }
    },
    {
      "node1": "FAM-16",
      "node2": "FAM-59",
      "name1": "is caused by",
      "name2": "causes",
      "direction": 1,
      "properties": {
        "Link type": "causes",
        "Relation": "causation",
        "Cross team": false,
        "Unblocked": ""
      }
    },
    {
      "node1": "FAM-27",
      "node2": "FAM-75",
      "name1": "is caused by",
      "name2": "causes",
      "direction": 1,
      "properties": {
        "Link type": "causes",
        "Relation": "causation",
        "Cross team": false,
        "Unblocked": ""
      }
    },
    {
      "node1": "FAM-42",
      "node2": "FAM-67",
      "name1": "is caused by",
      "name2": "causes",
      "direction": 1,
      "properties": {
        "Link type": "causes",
        "Relation": "causation",
        "Cross team": false,
        "Unblocked": ""
      }
    },
    {
      "node1": "FAM-26",
      "node2": "FAM-76",
      "name1": "is caused by",
      "name2": "causes",
      "direction": 1,
      "properties": {
        "Link type": "causes",
        "Relation": "causation",
        "Cross team": false,
        "Unblocked": ""
      }
    },
    {
      "node1": "FAM-58",
      "node2": "FAM-55",
      "name1": "has output reused by",
      "name2": "reuses output of",
      "direction": 0,
      "properties": {
        "Link type": "relates",
        "Relation": "information",
        "Cross team": true,
        "Unblocked": ""
      }
    },
    {
      "node1": "FAM-34",
      "node2": "FAM-40",
      "name1": "is alerted on by",
      "name2": "alerts on",
      "direction": 0,
      "properties": {
        "Link type": "relates",
        "Relation": "information",
        "Cross team": false,
        "Unblocked": ""
      }
    },
    {
      "node1": "FAM-67",
      "node2": "FAM-40",
      "name1": "detects",
      "name2": "is detected by",
      "direction": 0,
      "properties": {
        "Link type": "relates",
        "Relation": "information",
        "Cross team": true,
        "Unblocked": ""
      }
    },
    {
      "node1": "FAM-77",
      "node2": "FAM-67",
      "name1": "is duplicated by",
      "name2": "duplicates",
      "direction": 1,
      "properties": {
        "Link type": "duplicates",
        "Relation": "information",
        "Cross team": false,
        "Unblocked": ""
      }
    },
    {
      "node1": "FAM-17",
      "node2": "FAM-17-c1",
      "name1": "comments on",
      "name2": "has comment",
      "direction": 1,
      "properties": {
        "Link type": "comment",
        "Relation": "information",
        "Cross team": false,
        "Unblocked": ""
      }
    },
    {
      "node1": "FAM-17-c1",
      "node2": "FAM-17-c1.1",
      "name1": "replies to",
      "name2": "has reply",
      "direction": 1,
      "properties": {
        "Link type": "reply",
        "Relation": "sequence",
        "Cross team": false,
        "Unblocked": ""
      }
    },
    {
      "node1": "FAM-18",
      "node2": "FAM-18-c1",
      "name1": "comments on",
      "name2": "has comment",
      "direction": 1,
      "properties": {
        "Link type": "comment",
        "Relation": "information",
        "Cross team": false,
        "Unblocked": ""
      }
    },
    {
      "node1": "FAM-20",
      "node2": "FAM-20-c1",
      "name1": "comments on",
      "name2": "has comment",
      "direction": 1,
      "properties": {
        "Link type": "comment",
        "Relation": "information",
        "Cross team": false,
        "Unblocked": ""
      }
    },
    {
      "node1": "FAM-20-c1",
      "node2": "FAM-20-c1.1",
      "name1": "replies to",
      "name2": "has reply",
      "direction": 1,
      "properties": {
        "Link type": "reply",
        "Relation": "sequence",
        "Cross team": false,
        "Unblocked": ""
      }
    },
    {
      "node1": "FAM-20-c1",
      "node2": "FAM-20-c1.2",
      "name1": "replies to",
      "name2": "has reply",
      "direction": 1,
      "properties": {
        "Link type": "reply",
        "Relation": "sequence",
        "Cross team": false,
        "Unblocked": ""
      }
    },
    {
      "node1": "FAM-23",
      "node2": "FAM-23-c1",
      "name1": "comments on",
      "name2": "has comment",
      "direction": 1,
      "properties": {
        "Link type": "comment",
        "Relation": "information",
        "Cross team": false,
        "Unblocked": ""
      }
    },
    {
      "node1": "FAM-23-c1",
      "node2": "FAM-23-c1.1",
      "name1": "replies to",
      "name2": "has reply",
      "direction": 1,
      "properties": {
        "Link type": "reply",
        "Relation": "sequence",
        "Cross team": false,
        "Unblocked": ""
      }
    },
    {
      "node1": "FAM-24",
      "node2": "FAM-24-c1",
      "name1": "comments on",
      "name2": "has comment",
      "direction": 1,
      "properties": {
        "Link type": "comment",
        "Relation": "information",
        "Cross team": false,
        "Unblocked": ""
      }
    },
    {
      "node1": "FAM-26",
      "node2": "FAM-26-c1",
      "name1": "comments on",
      "name2": "has comment",
      "direction": 1,
      "properties": {
        "Link type": "comment",
        "Relation": "information",
        "Cross team": false,
        "Unblocked": ""
      }
    },
    {
      "node1": "FAM-26-c1",
      "node2": "FAM-26-c1.1",
      "name1": "replies to",
      "name2": "has reply",
      "direction": 1,
      "properties": {
        "Link type": "reply",
        "Relation": "sequence",
        "Cross team": false,
        "Unblocked": ""
      }
    },
    {
      "node1": "FAM-26-c1",
      "node2": "FAM-26-c1.2",
      "name1": "replies to",
      "name2": "has reply",
      "direction": 1,
      "properties": {
        "Link type": "reply",
        "Relation": "sequence",
        "Cross team": false,
        "Unblocked": ""
      }
    },
    {
      "node1": "FAM-27",
      "node2": "FAM-27-c1",
      "name1": "comments on",
      "name2": "has comment",
      "direction": 1,
      "properties": {
        "Link type": "comment",
        "Relation": "information",
        "Cross team": false,
        "Unblocked": ""
      }
    },
    {
      "node1": "FAM-27-c1",
      "node2": "FAM-27-c1.1",
      "name1": "replies to",
      "name2": "has reply",
      "direction": 1,
      "properties": {
        "Link type": "reply",
        "Relation": "sequence",
        "Cross team": false,
        "Unblocked": ""
      }
    },
    {
      "node1": "FAM-27-c1",
      "node2": "FAM-27-c1.2",
      "name1": "replies to",
      "name2": "has reply",
      "direction": 1,
      "properties": {
        "Link type": "reply",
        "Relation": "sequence",
        "Cross team": false,
        "Unblocked": ""
      }
    },
    {
      "node1": "FAM-27",
      "node2": "FAM-27-c2",
      "name1": "comments on",
      "name2": "has comment",
      "direction": 1,
      "properties": {
        "Link type": "comment",
        "Relation": "information",
        "Cross team": false,
        "Unblocked": ""
      }
    },
    {
      "node1": "FAM-29",
      "node2": "FAM-29-c1",
      "name1": "comments on",
      "name2": "has comment",
      "direction": 1,
      "properties": {
        "Link type": "comment",
        "Relation": "information",
        "Cross team": false,
        "Unblocked": ""
      }
    },
    {
      "node1": "FAM-29-c1",
      "node2": "FAM-29-c1.1",
      "name1": "replies to",
      "name2": "has reply",
      "direction": 1,
      "properties": {
        "Link type": "reply",
        "Relation": "sequence",
        "Cross team": false,
        "Unblocked": ""
      }
    },
    {
      "node1": "FAM-29-c1",
      "node2": "FAM-29-c1.2",
      "name1": "replies to",
      "name2": "has reply",
      "direction": 1,
      "properties": {
        "Link type": "reply",
        "Relation": "sequence",
        "Cross team": false,
        "Unblocked": ""
      }
    },
    {
      "node1": "FAM-32",
      "node2": "FAM-32-c1",
      "name1": "comments on",
      "name2": "has comment",
      "direction": 1,
      "properties": {
        "Link type": "comment",
        "Relation": "information",
        "Cross team": false,
        "Unblocked": ""
      }
    },
    {
      "node1": "FAM-32-c1",
      "node2": "FAM-32-c1.1",
      "name1": "replies to",
      "name2": "has reply",
      "direction": 1,
      "properties": {
        "Link type": "reply",
        "Relation": "sequence",
        "Cross team": false,
        "Unblocked": ""
      }
    },
    {
      "node1": "FAM-32-c1",
      "node2": "FAM-32-c1.2",
      "name1": "replies to",
      "name2": "has reply",
      "direction": 1,
      "properties": {
        "Link type": "reply",
        "Relation": "sequence",
        "Cross team": false,
        "Unblocked": ""
      }
    },
    {
      "node1": "FAM-32",
      "node2": "FAM-32-c2",
      "name1": "comments on",
      "name2": "has comment",
      "direction": 1,
      "properties": {
        "Link type": "comment",
        "Relation": "information",
        "Cross team": false,
        "Unblocked": ""
      }
    },
    {
      "node1": "FAM-35",
      "node2": "FAM-35-c1",
      "name1": "comments on",
      "name2": "has comment",
      "direction": 1,
      "properties": {
        "Link type": "comment",
        "Relation": "information",
        "Cross team": false,
        "Unblocked": ""
      }
    },
    {
      "node1": "FAM-35-c1",
      "node2": "FAM-35-c1.1",
      "name1": "replies to",
      "name2": "has reply",
      "direction": 1,
      "properties": {
        "Link type": "reply",
        "Relation": "sequence",
        "Cross team": false,
        "Unblocked": ""
      }
    },
    {
      "node1": "FAM-36",
      "node2": "FAM-36-c1",
      "name1": "comments on",
      "name2": "has comment",
      "direction": 1,
      "properties": {
        "Link type": "comment",
        "Relation": "information",
        "Cross team": false,
        "Unblocked": ""
      }
    },
    {
      "node1": "FAM-36-c1",
      "node2": "FAM-36-c1.1",
      "name1": "replies to",
      "name2": "has reply",
      "direction": 1,
      "properties": {
        "Link type": "reply",
        "Relation": "sequence",
        "Cross team": false,
        "Unblocked": ""
      }
    },
    {
      "node1": "FAM-36-c1",
      "node2": "FAM-36-c1.2",
      "name1": "replies to",
      "name2": "has reply",
      "direction": 1,
      "properties": {
        "Link type": "reply",
        "Relation": "sequence",
        "Cross team": false,
        "Unblocked": ""
      }
    },
    {
      "node1": "FAM-38",
      "node2": "FAM-38-c1",
      "name1": "comments on",
      "name2": "has comment",
      "direction": 1,
      "properties": {
        "Link type": "comment",
        "Relation": "information",
        "Cross team": false,
        "Unblocked": ""
      }
    },
    {
      "node1": "FAM-38-c1",
      "node2": "FAM-38-c1.1",
      "name1": "replies to",
      "name2": "has reply",
      "direction": 1,
      "properties": {
        "Link type": "reply",
        "Relation": "sequence",
        "Cross team": false,
        "Unblocked": ""
      }
    },
    {
      "node1": "FAM-41",
      "node2": "FAM-41-c1",
      "name1": "comments on",
      "name2": "has comment",
      "direction": 1,
      "properties": {
        "Link type": "comment",
        "Relation": "information",
        "Cross team": false,
        "Unblocked": ""
      }
    },
    {
      "node1": "FAM-41-c1",
      "node2": "FAM-41-c1.1",
      "name1": "replies to",
      "name2": "has reply",
      "direction": 1,
      "properties": {
        "Link type": "reply",
        "Relation": "sequence",
        "Cross team": false,
        "Unblocked": ""
      }
    },
    {
      "node1": "FAM-42",
      "node2": "FAM-42-c1",
      "name1": "comments on",
      "name2": "has comment",
      "direction": 1,
      "properties": {
        "Link type": "comment",
        "Relation": "information",
        "Cross team": false,
        "Unblocked": ""
      }
    },
    {
      "node1": "FAM-42-c1",
      "node2": "FAM-42-c1.1",
      "name1": "replies to",
      "name2": "has reply",
      "direction": 1,
      "properties": {
        "Link type": "reply",
        "Relation": "sequence",
        "Cross team": false,
        "Unblocked": ""
      }
    },
    {
      "node1": "FAM-42-c1",
      "node2": "FAM-42-c1.2",
      "name1": "replies to",
      "name2": "has reply",
      "direction": 1,
      "properties": {
        "Link type": "reply",
        "Relation": "sequence",
        "Cross team": false,
        "Unblocked": ""
      }
    },
    {
      "node1": "FAM-42",
      "node2": "FAM-42-c2",
      "name1": "comments on",
      "name2": "has comment",
      "direction": 1,
      "properties": {
        "Link type": "comment",
        "Relation": "information",
        "Cross team": false,
        "Unblocked": ""
      }
    },
    {
      "node1": "FAM-43",
      "node2": "FAM-43-c1",
      "name1": "comments on",
      "name2": "has comment",
      "direction": 1,
      "properties": {
        "Link type": "comment",
        "Relation": "information",
        "Cross team": false,
        "Unblocked": ""
      }
    },
    {
      "node1": "FAM-43",
      "node2": "FAM-43-c2",
      "name1": "comments on",
      "name2": "has comment",
      "direction": 1,
      "properties": {
        "Link type": "comment",
        "Relation": "information",
        "Cross team": false,
        "Unblocked": ""
      }
    },
    {
      "node1": "FAM-43-c2",
      "node2": "FAM-43-c2.1",
      "name1": "replies to",
      "name2": "has reply",
      "direction": 1,
      "properties": {
        "Link type": "reply",
        "Relation": "sequence",
        "Cross team": false,
        "Unblocked": ""
      }
    },
    {
      "node1": "FAM-44",
      "node2": "FAM-44-c1",
      "name1": "comments on",
      "name2": "has comment",
      "direction": 1,
      "properties": {
        "Link type": "comment",
        "Relation": "information",
        "Cross team": false,
        "Unblocked": ""
      }
    },
    {
      "node1": "FAM-44-c1",
      "node2": "FAM-44-c1.1",
      "name1": "replies to",
      "name2": "has reply",
      "direction": 1,
      "properties": {
        "Link type": "reply",
        "Relation": "sequence",
        "Cross team": false,
        "Unblocked": ""
      }
    },
    {
      "node1": "FAM-44-c1",
      "node2": "FAM-44-c1.2",
      "name1": "replies to",
      "name2": "has reply",
      "direction": 1,
      "properties": {
        "Link type": "reply",
        "Relation": "sequence",
        "Cross team": false,
        "Unblocked": ""
      }
    },
    {
      "node1": "FAM-48",
      "node2": "FAM-48-c1",
      "name1": "comments on",
      "name2": "has comment",
      "direction": 1,
      "properties": {
        "Link type": "comment",
        "Relation": "information",
        "Cross team": false,
        "Unblocked": ""
      }
    },
    {
      "node1": "FAM-48-c1",
      "node2": "FAM-48-c1.1",
      "name1": "replies to",
      "name2": "has reply",
      "direction": 1,
      "properties": {
        "Link type": "reply",
        "Relation": "sequence",
        "Cross team": false,
        "Unblocked": ""
      }
    },
    {
      "node1": "FAM-50",
      "node2": "FAM-50-c1",
      "name1": "comments on",
      "name2": "has comment",
      "direction": 1,
      "properties": {
        "Link type": "comment",
        "Relation": "information",
        "Cross team": false,
        "Unblocked": ""
      }
    },
    {
      "node1": "FAM-50-c1",
      "node2": "FAM-50-c1.1",
      "name1": "replies to",
      "name2": "has reply",
      "direction": 1,
      "properties": {
        "Link type": "reply",
        "Relation": "sequence",
        "Cross team": false,
        "Unblocked": ""
      }
    },
    {
      "node1": "FAM-50-c1",
      "node2": "FAM-50-c1.2",
      "name1": "replies to",
      "name2": "has reply",
      "direction": 1,
      "properties": {
        "Link type": "reply",
        "Relation": "sequence",
        "Cross team": false,
        "Unblocked": ""
      }
    },
    {
      "node1": "FAM-59",
      "node2": "FAM-59-c1",
      "name1": "comments on",
      "name2": "has comment",
      "direction": 1,
      "properties": {
        "Link type": "comment",
        "Relation": "information",
        "Cross team": false,
        "Unblocked": ""
      }
    },
    {
      "node1": "FAM-66",
      "node2": "FAM-66-c1",
      "name1": "comments on",
      "name2": "has comment",
      "direction": 1,
      "properties": {
        "Link type": "comment",
        "Relation": "information",
        "Cross team": false,
        "Unblocked": ""
      }
    },
    {
      "node1": "FAM-66-c1",
      "node2": "FAM-66-c1.1",
      "name1": "replies to",
      "name2": "has reply",
      "direction": 1,
      "properties": {
        "Link type": "reply",
        "Relation": "sequence",
        "Cross team": false,
        "Unblocked": ""
      }
    },
    {
      "node1": "FAM-67",
      "node2": "FAM-67-c1",
      "name1": "comments on",
      "name2": "has comment",
      "direction": 1,
      "properties": {
        "Link type": "comment",
        "Relation": "information",
        "Cross team": false,
        "Unblocked": ""
      }
    },
    {
      "node1": "FAM-67-c1",
      "node2": "FAM-67-c1.1",
      "name1": "replies to",
      "name2": "has reply",
      "direction": 1,
      "properties": {
        "Link type": "reply",
        "Relation": "sequence",
        "Cross team": false,
        "Unblocked": ""
      }
    },
    {
      "node1": "FAM-67",
      "node2": "FAM-67-c2",
      "name1": "comments on",
      "name2": "has comment",
      "direction": 1,
      "properties": {
        "Link type": "comment",
        "Relation": "information",
        "Cross team": false,
        "Unblocked": ""
      }
    },
    {
      "node1": "FAM-67-c2",
      "node2": "FAM-67-c2.1",
      "name1": "replies to",
      "name2": "has reply",
      "direction": 1,
      "properties": {
        "Link type": "reply",
        "Relation": "sequence",
        "Cross team": false,
        "Unblocked": ""
      }
    },
    {
      "node1": "FAM-67-c2",
      "node2": "FAM-67-c2.2",
      "name1": "replies to",
      "name2": "has reply",
      "direction": 1,
      "properties": {
        "Link type": "reply",
        "Relation": "sequence",
        "Cross team": false,
        "Unblocked": ""
      }
    },
    {
      "node1": "FAM-75",
      "node2": "FAM-75-c1",
      "name1": "comments on",
      "name2": "has comment",
      "direction": 1,
      "properties": {
        "Link type": "comment",
        "Relation": "information",
        "Cross team": false,
        "Unblocked": ""
      }
    },
    {
      "node1": "FAM-75-c1",
      "node2": "FAM-75-c1.1",
      "name1": "replies to",
      "name2": "has reply",
      "direction": 1,
      "properties": {
        "Link type": "reply",
        "Relation": "sequence",
        "Cross team": false,
        "Unblocked": ""
      }
    },
    {
      "node1": "FAM-76",
      "node2": "FAM-76-c1",
      "name1": "comments on",
      "name2": "has comment",
      "direction": 1,
      "properties": {
        "Link type": "comment",
        "Relation": "information",
        "Cross team": false,
        "Unblocked": ""
      }
    },
    {
      "node1": "FAM-77",
      "node2": "FAM-77-c1",
      "name1": "comments on",
      "name2": "has comment",
      "direction": 1,
      "properties": {
        "Link type": "comment",
        "Relation": "information",
        "Cross team": false,
        "Unblocked": ""
      }
    }
  ],
  "visuals": [
    {
      "nodeType": "Initiative",
      "shape": "star",
      "borderColor": "#FB8C00"
    },
    {
      "nodeType": "Epic",
      "shape": "hex",
      "borderColor": "#8E24AA"
    },
    {
      "nodeType": "Feature",
      "shape": "hex[8]",
      "borderColor": "#00ACC1"
    },
    {
      "nodeType": "Story",
      "shape": "circle",
      "borderColor": "#43A047"
    },
    {
      "nodeType": "Task",
      "shape": "hex[5]",
      "borderColor": "#1E88E5"
    },
    {
      "nodeType": "Bug",
      "shape": "hex[7]",
      "borderColor": "#E53935"
    },
    {
      "nodeType": "Sub-task",
      "shape": "circle",
      "borderColor": "#EC407A"
    },
    {
      "nodeType": "Comment",
      "shape": "hex[12]",
      "borderColor": "#C0CA33"
    },
    {
      "nodeType": "Sprint",
      "shape": "rectangle",
      "borderColor": "#FDD835"
    },
    {
      "nodeType": "Team",
      "shape": "rectangle",
      "borderColor": "#26A69A"
    }
  ],
  "dataTypes": {
    "Key": "string",
    "Status": "typelist",
    "Priority": "typelist",
    "Team": "typelist",
    "Assignee": "typelist",
    "Created": "datetime",
    "Start": "string",
    "Due date": "string",
    "Timeline date": "datetime",
    "Progress": "perc",
    "Strategic theme": "string",
    "Objective": "string",
    "Key result": "string",
    "Key result target": "int",
    "Key result current": "int",
    "Key result score": "dec",
    "Business value": "int",
    "Time criticality": "int",
    "Risk reduction": "int",
    "Job size": "int",
    "WSJF score": "dec",
    "Approved budget EUR": "int",
    "Forecast spend EUR": "int",
    "Funding status": "typelist",
    "Health": "typelist",
    "Executive sponsor": "string",
    "Target quarter": "typelist",
    "Expected benefit KPI": "string",
    "Jira link": "string",
    "Resolution": "typelist",
    "Fix version": "typelist",
    "Resolved": "string",
    "Story points": "int",
    "Sprint": "typelist",
    "Sprints carried": "string",
    "Reporter": "typelist",
    "Component": "typelist",
    "Labels": "string",
    "Affects version": "typelist",
    "Reopened": "string",
    "Flagged": "bool",
    "Flagged since": "string",
    "Open blockers": "int",
    "Blocked by other team": "bool",
    "Late blocker": "bool",
    "Severity": "typelist",
    "Estimate h": "dec",
    "Spent h": "dec",
    "Remaining h": "dec",
    "Comments": "int",
    "Thread": "string",
    "Reply": "bool",
    "Author": "typelist",
    "Author team": "typelist",
    "Link type": "typelist",
    "Relation": "typelist",
    "Cross team": "bool",
    "Unblocked": "string",
    "Sprint state": "typelist",
    "Start date": "string",
    "End date": "string",
    "Sprint goal": "string",
    "Issues": "int",
    "Story points committed": "int",
    "Story points completed": "int",
    "Team code": "string",
    "Member count": "int",
    "Members": "string",
    "Open issues": "int",
    "Flagged issues": "int"
  },
  "detailView": [
    {
      "nodeType": "*",
      "own": "*",
      "others": []
    },
    {
      "nodeType": "Story",
      "own": "*",
      "others": ["Status", "Story points"],
      "order": ["Epic", "Feature", "Story", "Task", "Bug", "Sub-task", "Comment"]
    },
    {
      "nodeType": "Task",
      "own": "*",
      "others": ["Status", "Story points"],
      "order": ["Epic", "Feature", "Story", "Task", "Bug", "Sub-task", "Comment"]
    },
    {
      "nodeType": "Bug",
      "own": "*",
      "others": ["Status", "Story points"],
      "order": ["Epic", "Feature", "Story", "Task", "Bug", "Sub-task", "Comment"]
    },
    {
      "nodeType": "Comment",
      "own": "*",
      "others": ["Author"],
      "order": ["Story", "Task", "Bug", "Comment"]
    },
    {
      "nodeType": "Epic",
      "own": "*",
      "others": ["Progress"],
      "order": ["Feature", "Story", "Task", "Bug"]
    },
    {
      "nodeType": "Feature",
      "own": "*",
      "others": ["Status", "Progress"],
      "order": ["Story", "Task", "Bug"]
    },
    {
      "nodeType": "Initiative",
      "own": "*",
      "others": ["Health"],
      "order": ["Epic"]
    },
    {
      "nodeType": "Sub-task",
      "own": "*",
      "others": ["Status"],
      "order": ["Story", "Task", "Bug"]
    },
    {
      "nodeType": "Sprint",
      "own": "*",
      "others": []
    },
    {
      "nodeType": "Team",
      "own": "*",
      "others": []
    }
  ],
  "metadata": {
    "sourceLink": "https://jira.example.com/jira/software/projects/FAM/boards/7"
  }
}
