{
  "prototype": "AVA-HR",
  "prd_set": "packs/hr/docs/PRDs/0000-ava-hr.md and area PRDs 0001\u20130006",
  "design_system": {
    "source": "talino-labs/nmblr.foundry-codex",
    "corpus": "0.5.0",
    "product_theme": "foundation",
    "modes": [
      "light",
      "dark"
    ],
    "skin": null
  },
  "responsive": {
    "breakpoints": {
      "sm": 640,
      "md": 768,
      "lg": 1024,
      "xl": 1280
    },
    "below_md": "tab bar, single column",
    "md_to_lg": "side rail, single column",
    "lg_up": "side rail, day spine beside the context column",
    "harness_clamps": [
      "phone 390",
      "tablet 834",
      "desktop fluid"
    ]
  },
  "screens": [
    {
      "id": "signin",
      "name": "Sign in with Google",
      "builds": [
        "1.1.1"
      ],
      "status": "built",
      "chrome": "none",
      "real": [
        "Google sign-in as the only entry"
      ],
      "mocked": [
        "the identity provider itself"
      ]
    },
    {
      "id": "day",
      "name": "My day",
      "builds": [
        "1.1",
        "1.2",
        "1.3.3",
        "2.1.3"
      ],
      "status": "built",
      "real": [
        "the five-step spine",
        "assigned work",
        "hours so far",
        "cutoff countdown"
      ],
      "mocked": [
        "the elapsed timer advances only on state change"
      ]
    },
    {
      "id": "mode",
      "name": "Onsite or WFH",
      "builds": [
        "1.1.4",
        "1.1.5"
      ],
      "status": "built",
      "real": [
        "asked once",
        "the stored-data statement"
      ],
      "mocked": [
        "the geofence check itself"
      ]
    },
    {
      "id": "checkin",
      "name": "Morning check-in",
      "builds": [
        "2.2.1",
        "2.2.2",
        "2.2.5"
      ],
      "status": "built",
      "real": [
        "assigned work + calendar",
        "a plan offered from the assignment and from yesterday",
        "the offer fills the field and never saves",
        "save disabled until written"
      ],
      "mocked": [
        "the 10:00 digest (2.2.3)",
        "the proposal is seeded, not generated"
      ]
    },
    {
      "id": "log",
      "name": "Log hours",
      "builds": [
        "1.2.1",
        "1.2.2"
      ],
      "status": "built",
      "real": [
        "valid-code check",
        "unknown code writes nothing"
      ],
      "mocked": [
        "the Projects sheet"
      ]
    },
    {
      "id": "journal",
      "name": "Daily journal",
      "builds": [
        "2.3.1",
        "2.3.2"
      ],
      "status": "built",
      "real": [
        "the draft",
        "edit before saving",
        "never rendered to a lead"
      ],
      "mocked": [
        "the 30-minutes-before trigger"
      ]
    },
    {
      "id": "out",
      "name": "Clock-out split",
      "builds": [
        "1.2.3",
        "1.2.4",
        "1.2.5"
      ],
      "status": "built",
      "real": [
        "the drafted split",
        "a difference from the clock is named and routed for approval",
        "the filing records who must approve it"
      ],
      "mocked": [
        "the policy version string"
      ]
    },
    {
      "id": "filed",
      "name": "Day closed",
      "builds": [
        "1.2.4",
        "4.1.4"
      ],
      "status": "built",
      "real": [
        "what was filed, by code",
        "the policy version recorded"
      ],
      "mocked": [
        "the Timesheet write"
      ]
    },
    {
      "id": "hours",
      "name": "My hours",
      "builds": [
        "1.2.1",
        "4.3.2"
      ],
      "status": "built",
      "real": [
        "this cutoff's rows",
        "the lock date"
      ],
      "mocked": [
        "history before 16 Oct"
      ]
    },
    {
      "id": "ava",
      "name": "AVA",
      "builds": [
        "1.1.1",
        "1.2.1",
        "1.2.2",
        "1.3.1",
        "1.3.2",
        "2.2.4",
        "2.3.3"
      ],
      "status": "built",
      "real": [
        "in / out / hours / blocker parsing",
        "step-two refusal for leave and overtime",
        "the two nudges arrive here as messages, answered by reply"
      ],
      "mocked": [
        "any actual language model \u2014 the parse is a regex"
      ]
    },
    {
      "id": "audit",
      "name": "Before the lock",
      "builds": [
        "3.2.2",
        "3.2.6",
        "4.2.5",
        "4.3.1"
      ],
      "status": "built",
      "real": [
        "the 18-hour fixture as three filings behind one confirm",
        "BR-S08/09/12 checks",
        "the open CTO remainder"
      ],
      "mocked": [
        "the engine that would compute it"
      ]
    },
    {
      "id": "team",
      "name": "Team today",
      "builds": [
        "2.2.3",
        "2.2.4",
        "5.1.1",
        "5.1.2",
        "5.1.3",
        "5.1.4",
        "5.1.5",
        "5.1.6",
        "5.1.7",
        "5.2.1"
      ],
      "status": "built",
      "real": [
        "lead vs HR scope",
        "KPI tiles",
        "hours by code",
        "alerts naming their story",
        "HR-only exceptions queue"
      ],
      "mocked": [
        "~150 people \u2014 9 are shown",
        "the role check (it is a client-side switch here)"
      ],
      "note": "The 10:00 digest has no page: it is a Google Chat message, shown here as a line on Team today with a link out."
    },
    {
      "id": "assign",
      "name": "Assign work",
      "builds": [
        "2.1.1",
        "2.1.2",
        "2.1.3",
        "2.1.4"
      ],
      "status": "built",
      "real": [
        "the sentence is parsed and read back",
        "nothing is written until the lead confirms",
        "unknown and closed codes end the attempt",
        "a non-lead is refused",
        "the Projects list with its active flag"
      ],
      "mocked": [
        "the parse is a regex, not a model",
        "the Assignments sheet"
      ]
    }
  ],
  "not_built": [
    {
      "id": "3.1",
      "scope": "step two",
      "why": "leave, birthday leave, proof, half day, undertime, official business"
    },
    {
      "id": "3.2.1, 3.2.3-3.2.5",
      "scope": "step two",
      "why": "overtime proposed from the logs, rest day and holiday, pay or CTO, the CTO type"
    },
    {
      "id": "4.1",
      "scope": "step two",
      "why": "the policy engine itself \u2014 rules without a release, the calendar, determinism"
    },
    {
      "id": "4.2.1-4.2.4",
      "scope": "step two",
      "why": "corrections and approvals: file in a sentence, routed by age, approve with the breakdown, clear the routine"
    },
    {
      "id": "4.3.3",
      "scope": "step two",
      "why": "the audit trail as something a person can read"
    },
    {
      "id": "5.2.2-5.2.4",
      "scope": "step two",
      "why": "HR's workspace: certificates, the rule changelog, proving what the system did"
    },
    {
      "id": "6",
      "scope": "step two",
      "why": "payroll hand-off and the Sprout parallel run \u2014 no receiving system chosen"
    }
  ],
  "navigation": {
    "principle": "One navigation at every width; AVA is the prominent middle item on a phone and a floating button on desktop.",
    "employee": [
      "My day",
      "My hours",
      "AVA"
    ],
    "lead": [
      "My day",
      "My hours",
      "AVA",
      "Team",
      "Projects"
    ],
    "hr": [
      "My day",
      "My hours",
      "AVA",
      "People",
      "Projects"
    ],
    "note": "No sub-tabs. The digest is a Chat message, not a destination."
  }
}
