P0 requirements
307
550 consolidated Notion + WaterPesa-chat requirements mapped to implementation targets and acceptance gates.
| ID | Priority | Domain | Requirement | Target | Source |
|---|---|---|---|---|---|
WP-COREI-001 | P0 | Core invariants | Treat WaterPesa as the long-lived water-accountability system; meters, payment rails, billing systems, GIS, SCADA and vendors are replaceable adapters. | packages/domain + adapters | Notion Monorepo Spec + Blueprint + prior chats |
WP-COREI-002 | P0 | Core invariants | Preserve the canonical trace inflow → zone/DMA/site → connection → meter/read → validated consumption → tariff → bill → payment → allocation → variance → incident → work order → intervention → verification. | operator-web + domain | Notion Monorepo Spec + Blueprint + prior chats |
WP-COREI-003 | P0 | Core invariants | Preserve raw → normalized → derived → decision → outcome lineage for water, money and operational data. | telemetry/events/audit | Notion Monorepo Spec + Blueprint + prior chats |
WP-COREI-004 | P0 | Core invariants | Never attach permanent commercial history directly to a replaceable physical meter. | domain + migration | Notion Monorepo Spec + Blueprint + prior chats |
WP-COREI-005 | P0 | Core invariants | Separate customer, account, premise, service point/connection, meter installation and physical device identities. | domain + migration | Notion Monorepo Spec + Blueprint + prior chats |
WP-COREI-006 | P0 | Core invariants | Make data confidence and actual/estimated/missing status explicit; do not present false precision. | ui + reporting | Notion Monorepo Spec + Blueprint + prior chats |
WP-COREI-007 | P0 | Core invariants | AI may explain, summarize, classify or suggest; it may not authoritatively adjust bills, move money, disconnect water or certify metrology. | packages/ai + permissions | Notion Monorepo Spec + Blueprint + prior chats |
WP-IDENT-001 | P0 | Identity & tenancy | Model organization, workspace, membership, service provider and portfolio separately. | packages/domain + tenancy + auth | Notion Monorepo Spec + prior chats |
WP-IDENT-002 | P0 | Identity & tenancy | Implement workspace-scoped tenancy on every tenant-owned record. | packages/domain + tenancy + auth | Notion Monorepo Spec + prior chats |
WP-IDENT-003 | P0 | Identity & tenancy | Preserve external IDs from utility ERP, OEM, M-PESA, banks, GIS and SCADA. | packages/domain + tenancy + auth | Notion Monorepo Spec + prior chats |
WP-IDENT-004 | P0 | Identity & tenancy | Use internal UUID/ULID IDs and separate human-readable public IDs for accounts, work orders, incidents and devices. | packages/domain + tenancy + auth | Notion Monorepo Spec + prior chats |
WP-IDENT-005 | P0 | Identity & tenancy | Scope resident access by account/service relationship; field access by assignment/service area; portfolio users by explicit provider authorization. | packages/domain + tenancy + auth | Notion Monorepo Spec + prior chats |
WP-IDENT-006 | P0 | Identity & tenancy | Support move-in/move-out and occupancy periods without overwriting property or meter history. | packages/domain + tenancy + auth | Notion Monorepo Spec + prior chats |
WP-IDENT-007 | P0 | Identity & tenancy | Support shared meters, one meter to multiple accounts, and one premise with multiple service agreements as explicit modeled cases. | packages/domain + tenancy + auth | Notion Monorepo Spec + prior chats |
WP-PERSO-001 | P1 | Personas & access | Support utility executive/manager, property manager, finance officer, billing officer, customer care, NRW analyst, field dispatcher/technician, auditor/regulator viewer and administrator roles. | permissions + all apps | Notion Root Personas + Water Notes + prior chats |
WP-PERSO-002 | P1 | Personas & access | Add procurement officer, metering engineer, irrigation manager, security officer and program/funder viewer role templates. | permissions + all apps | Notion Root Personas + Water Notes + prior chats |
WP-PERSO-003 | P1 | Personas & access | Keep persona presentation separate from authorization capabilities. | permissions + all apps | Notion Root Personas + Water Notes + prior chats |
WP-PERSO-004 | P1 | Personas & access | Use capabilities instead of page-name roles for authorization checks. | permissions + all apps | Notion Root Personas + Water Notes + prior chats |
WP-PERSO-005 | P1 | Personas & access | Require dual approval for remote valve closure/reconnect, refunds, tariff activation, STS key changes and destructive migration operations. | permissions + all apps | Notion Root Personas + Water Notes + prior chats |
WP-PERSO-006 | P1 | Personas & access | Support low-literacy/basic-phone residents through future USSD/SMS/voice-friendly flows and Kiswahili content design. | permissions + all apps | Notion Root Personas + Water Notes + prior chats |
WP-PERSO-007 | P1 | Personas & access | Support vulnerable-household policy flags such as grace period/emergency-credit eligibility without exposing sensitive profile details broadly. | permissions + all apps | Notion Root Personas + Water Notes + prior chats |
WP-PERSO-008 | P1 | Personas & access | Support Gen-Z/tenant conservation challenges as optional engagement, never as a prerequisite for service access. | permissions + all apps | Notion Root Personas + Water Notes + prior chats |
WP-TELEM-001 | P0 | Telemetry & metering | Persist raw meter/gateway payloads append-only before normalization. | packages/telemetry + ingest-worker | Notion Hardware Matrix + Monorepo Spec + Blueprint |
WP-TELEM-002 | P0 | Telemetry & metering | Normalize units, timestamps, timezone, sequence, quality flags, battery, signal, tamper, reverse flow and valve state where supported. | telemetry + meter-adapters + ingest-worker | Notion Hardware Matrix + Monorepo Spec + Blueprint |
WP-TELEM-003 | P0 | Telemetry & metering | Accept late/out-of-order readings but flag them; do not silently discard valid history. | telemetry + meter-adapters + ingest-worker | Notion Hardware Matrix + Monorepo Spec + Blueprint |
WP-TELEM-004 | P0 | Telemetry & metering | Deduplicate repeated packets idempotently. | telemetry + meter-adapters + ingest-worker | Notion Hardware Matrix + Monorepo Spec + Blueprint |
WP-TELEM-005 | P0 | Telemetry & metering | Preserve device clock and server receive clock. | telemetry + meter-adapters + ingest-worker | Notion Hardware Matrix + Monorepo Spec + Blueprint |
WP-TELEM-006 | P0 | Telemetry & metering | Make missing intervals explicit instead of silently interpolating. | telemetry + meter-adapters + ingest-worker | Notion Hardware Matrix + Monorepo Spec + Blueprint |
WP-TELEM-007 | P0 | Telemetry & metering | Support cumulative volume, interval volume and flow rate. | telemetry + meter-adapters + ingest-worker | Notion Hardware Matrix + Monorepo Spec + Blueprint |
WP-TELEM-008 | P0 | Telemetry & metering | Support mechanical/manual, ultrasonic, AMR and smart meters through adapters. | telemetry + meter-adapters + ingest-worker | Notion Hardware Matrix + Monorepo Spec + Blueprint |
WP-TELEM-009 | P0 | Telemetry & metering | Support bulk meters, pressure sensors, tank/level sensors, acoustic sensors, valves and gateways. | telemetry + meter-adapters + ingest-worker | Notion Hardware Matrix + Monorepo Spec + Blueprint |
WP-TELEM-010 | P0 | Telemetry & metering | Separate modem/SIM lifecycle from meter identity for NB-IoT/4G devices. | telemetry + meter-adapters + ingest-worker | Notion Hardware Matrix + Monorepo Spec + Blueprint |
WP-TELEM-011 | P0 | Telemetry & metering | Support LoRaWAN, NB-IoT, 4G/Cat1, GPRS, wireless M-Bus/OMS, M-Bus, RS-485/Modbus and optical adapter metadata. | telemetry + meter-adapters + ingest-worker | Notion Hardware Matrix + Monorepo Spec + Blueprint |
WP-TELEM-012 | P0 | Telemetry & metering | Create meter-health workflows for silence, low battery, signal degradation, reverse flow, tamper, reset/rollover and firmware/codec changes. | telemetry + meter-adapters + ingest-worker | Notion Hardware Matrix + Monorepo Spec + Blueprint |
WP-TELEM-013 | P0 | Telemetry & metering | Keep communication/server provider swappable; do not assume one LoRaWAN network server or OEM head-end. | telemetry + meter-adapters + ingest-worker | Notion Hardware Matrix + Monorepo Spec + Blueprint |
WP-TELEM-014 | P0 | Telemetry & metering | Provide replay tests proving a raw payload normalizes deterministically under a versioned decoder. | telemetry + meter-adapters + ingest-worker | Notion Hardware Matrix + Monorepo Spec + Blueprint |
WP-HARDW-001 | P1 | Hardware certification & lifecycle | Create a WaterPesa Compatible certification workflow for each meter/sensor/gateway model. | meter-certification + hardware-registry + field-mobile | Notion Hardware Matrix + Water Notes + installer chats |
WP-HARDW-002 | P1 | Hardware certification & lifecycle | Record manufacturer, model, firmware, metrology technology, communication options, certification evidence, test results and support lifecycle. | meter-certification + hardware-registry + field-mobile | Notion Hardware Matrix + Water Notes + installer chats |
WP-HARDW-003 | P1 | Hardware certification & lifecycle | Keep exact installed Meide/Chenhui model at Research until matched to model/firmware-specific evidence. | meter-certification + hardware-registry + field-mobile | Notion Hardware Matrix + Water Notes + installer chats |
WP-HARDW-004 | P1 | Hardware certification & lifecycle | Capture installation orientation, pipe size, upstream/downstream conditions, seal, GPS, commissioning read and photos. | meter-certification + hardware-registry + field-mobile | Notion Hardware Matrix + Water Notes + installer chats |
WP-HARDW-005 | P1 | Hardware certification & lifecycle | Maintain chain of custody from warehouse/installer to active installation to removed/repaired/scrapped device. | meter-certification + hardware-registry + field-mobile | Notion Hardware Matrix + Water Notes + installer chats |
WP-HARDW-006 | P1 | Hardware certification & lifecycle | Require commissioning QA before a meter becomes billable. | meter-certification + hardware-registry + field-mobile | Notion Hardware Matrix + Water Notes + installer chats |
WP-HARDW-007 | P1 | Hardware certification & lifecycle | Preserve calibration/certificate metadata and expiry/retest dates. | meter-certification + hardware-registry + field-mobile | Notion Hardware Matrix + Water Notes + installer chats |
WP-HARDW-008 | P1 | Hardware certification & lifecycle | Track gateway/modem replacements independently of meter replacement. | meter-certification + hardware-registry + field-mobile | Notion Hardware Matrix + Water Notes + installer chats |
WP-HARDW-009 | P1 | Hardware certification & lifecycle | Maintain hardware adapter conformance tests for duplicate packet, clock drift, offline backfill, reset, negative flow, battery, signal and command acknowledgement. | meter-certification + hardware-registry + field-mobile | Notion Hardware Matrix + Water Notes + installer chats |
WP-PREPA-001 | P0 | Prepaid & STS vending | Support prepaid water credits as a separate bounded domain from telemetry. | prepaid-vending + payments | Notion Meide/Chenhui dossier + Water Notes + prior chats |
WP-PREPA-002 | P0 | Prepaid & STS vending | Model meter serial, DRN, CIU, SGC, KRN, TI/TID and supply-group/key metadata without exposing secret keys in application logs/database. | prepaid-vending + payments + migration + operator-web | Notion Meide/Chenhui dossier + Water Notes + prior chats |
WP-PREPA-003 | P0 | Prepaid & STS vending | Keep STS/vending keys inside approved secure-module/HSM/KMS boundaries. | prepaid-vending + payments + migration + operator-web | Notion Meide/Chenhui dossier + Water Notes + prior chats |
WP-PREPA-004 | P0 | Prepaid & STS vending | Require dual approval and audit for key/version changes and sensitive vending configuration. | prepaid-vending + payments + migration + operator-web | Notion Meide/Chenhui dossier + Water Notes + prior chats |
WP-PREPA-005 | P0 | Prepaid & STS vending | Support M-PESA payment → normalized ledger → vending request → token issuance → delivery/presentation → meter acknowledgement/credit evidence. | prepaid-vending + payments + migration + operator-web | Notion Meide/Chenhui dossier + Water Notes + prior chats |
WP-PREPA-006 | P0 | Prepaid & STS vending | Prevent duplicate economic credit from duplicate payment callbacks or repeated token presentation. | prepaid-vending + payments + migration + operator-web | Notion Meide/Chenhui dossier + Water Notes + prior chats |
WP-PREPA-007 | P0 | Prepaid & STS vending | Support safely re-presenting a failed token delivery without double charging. | prepaid-vending + payments + migration + operator-web | Notion Meide/Chenhui dossier + Water Notes + prior chats |
WP-PREPA-008 | P0 | Prepaid & STS vending | Handle low-balance, zero-balance, emergency-credit/grace, disconnected, reconnect-pending and valve-failure states. | prepaid-vending + payments + migration + operator-web | Notion Meide/Chenhui dossier + Water Notes + prior chats |
WP-PREPA-009 | P0 | Prepaid & STS vending | Track TID rollover readiness/history explicitly for STS fleets. | prepaid-vending + payments + migration + operator-web | Notion Meide/Chenhui dossier + Water Notes + prior chats |
WP-PREPA-010 | P0 | Prepaid & STS vending | Provide a bounded dual-run migration plan from incumbent prepaid software to WaterPesa. | prepaid-vending + payments + migration + operator-web | Notion Meide/Chenhui dossier + Water Notes + prior chats |
WP-PREPA-011 | P0 | Prepaid & STS vending | Reconcile customers, meters, historical vending, balances, tokens and meter state before cutover. | prepaid-vending + payments + migration + operator-web | Notion Meide/Chenhui dossier + Water Notes + prior chats |
WP-PREPA-012 | P0 | Prepaid & STS vending | Keep prepaid migration reversible with rollback and field-support playbooks. | prepaid-vending + payments + migration + operator-web | Notion Meide/Chenhui dossier + Water Notes + prior chats |
WP-PAYME-001 | P0 | Payments & reconciliation | Use the lifecycle intent → provider event → verification → normalized payment → account match → bill allocation → receipt → settlement → bank confirmation. | payments + payment-adapters + operator-web | Notion Daraja + Blueprint + prior chats |
WP-PAYME-002 | P0 | Payments & reconciliation | Do not treat a provider callback as final accounting truth. | payments + payment-adapters + resident/operator | Notion Daraja + Blueprint + prior chats |
WP-PAYME-003 | P0 | Payments & reconciliation | Persist raw provider events and idempotency keys. | payments + payment-adapters + resident/operator | Notion Daraja + Blueprint + prior chats |
WP-PAYME-004 | P0 | Payments & reconciliation | Handle duplicate callbacks, late callbacks, wrong account references, partial payments, overpayments, underpayments, reversals and provider outages. | payments + payment-adapters + resident/operator | Notion Daraja + Blueprint + prior chats |
WP-PAYME-005 | P0 | Payments & reconciliation | Create an unmatched-payment queue with reason, owner, aging and resolution history. | payments + payment-adapters + resident/operator | Notion Daraja + Blueprint + prior chats |
WP-PAYME-006 | P0 | Payments & reconciliation | Separate provider settlement reconciliation from customer-payment allocation reconciliation. | payments + payment-adapters + resident/operator | Notion Daraja + Blueprint + prior chats |
WP-PAYME-007 | P0 | Payments & reconciliation | Support M-PESA/Daraja first, with adapter contracts for Airtel Money, bank feeds and manual/cash imports. | payments + payment-adapters + resident/operator | Notion Daraja + Blueprint + prior chats |
WP-PAYME-008 | P0 | Payments & reconciliation | Keep utility/provider-owned settlement account as the default commercial model unless explicitly changed. | payments + payment-adapters + resident/operator | Notion Daraja + Blueprint + prior chats |
WP-PAYME-009 | P0 | Payments & reconciliation | Produce daily reconciliation totals: provider, internal normalized payments, allocations and bank settlement. | payments + payment-adapters + resident/operator | Notion Daraja + Blueprint + prior chats |
WP-PAYME-010 | P0 | Payments & reconciliation | Maintain immutable allocation/reversal history instead of deleting original transactions. | payments + payment-adapters + resident/operator | Notion Daraja + Blueprint + prior chats |
WP-PAYME-011 | P0 | Payments & reconciliation | Provide resident receipts and operator finance evidence from the same normalized transaction lineage. | payments + payment-adapters + resident/operator | Notion Daraja + Blueprint + prior chats |
WP-BILLI-001 | P0 | Billing & tariffs | Implement tariff-as-code with immutable effective-dated versions. | tariffs + billing | Notion Blueprint + Tenders + prior chats |
WP-BILLI-002 | P0 | Billing & tariffs | Model customer class, meter/connection class, blocks, minimum/fixed charges, sewer rules, levies/taxes, subsidies, allowances and adjustments. | tariffs + billing + resident/operator | Notion Blueprint + Tenders + prior chats |
WP-BILLI-003 | P0 | Billing & tariffs | Preserve actual vs estimated read status on every consumption period and bill. | tariffs + billing + resident/operator | Notion Blueprint + Tenders + prior chats |
WP-BILLI-004 | P0 | Billing & tariffs | Generate deterministic bill lines, explanation tree, tariff version ID, calculation hash and source reads. | tariffs + billing + resident/operator | Notion Blueprint + Tenders + prior chats |
WP-BILLI-005 | P0 | Billing & tariffs | Support mid-cycle tariff changes, meter swaps, backdated category changes, credit notes and estimated reads as explicit cases. | tariffs + billing + resident/operator | Notion Blueprint + Tenders + prior chats |
WP-BILLI-006 | P0 | Billing & tariffs | Build Explain My Bill for residents and customer-care staff. | tariffs + billing + resident/operator | Notion Blueprint + Tenders + prior chats |
WP-BILLI-007 | P0 | Billing & tariffs | Open a dispute without mutating the original issued bill; adjustments create auditable superseding/compensating records. | tariffs + billing + resident/operator | Notion Blueprint + Tenders + prior chats |
WP-BILLI-008 | P0 | Billing & tariffs | Provide golden-account test packs for tariff migration and first-cycle QA. | tariffs + billing + resident/operator | Notion Blueprint + Tenders + prior chats |
WP-BILLI-009 | P0 | Billing & tariffs | Provide customer-impact simulation before tariff activation. | tariffs + billing + resident/operator | Notion Blueprint + Tenders + prior chats |
WP-BILLI-010 | P0 | Billing & tariffs | Create first-bill QA dashboards after tariff/cutover changes. | tariffs + billing + resident/operator | Notion Blueprint + Tenders + prior chats |
WP-WATER-001 | P0 | Water balance & NRW | Calculate water balance only after explicit boundary, period, inflow, authorized outputs, storage change and data gaps are defined. | water-balance + operator-web | Notion Blueprint + prior chats |
WP-WATER-002 | P0 | Water balance & NRW | Compute system input, billed/unbilled authorized consumption, unresolved variance and loss estimates only to justified precision. | water-balance + anomaly-engine + work-orders | Notion Blueprint + prior chats |
WP-WATER-003 | P0 | Water balance & NRW | Support DMA/sub-DMA, property, building, floor/block and irrigation-scheme balance hierarchies. | water-balance + anomaly-engine + work-orders | Notion Blueprint + prior chats |
WP-WATER-004 | P0 | Water balance & NRW | Calculate minimum night flow and continuous-flow indicators where interval telemetry exists. | water-balance + anomaly-engine + work-orders | Notion Blueprint + prior chats |
WP-WATER-005 | P0 | Water balance & NRW | Correlate pressure, supply schedule, meter health, complaints and work history during NRW triage. | water-balance + anomaly-engine + work-orders | Notion Blueprint + prior chats |
WP-WATER-006 | P0 | Water balance & NRW | Rank cases by measured variance, confidence, expected recoverable m³/KSh and intervention cost. | water-balance + anomaly-engine + work-orders | Notion Blueprint + prior chats |
WP-WATER-007 | P0 | Water balance & NRW | Convert anomaly → incident → work order → field evidence → repair → post-intervention measurement → verified outcome. | water-balance + anomaly-engine + work-orders | Notion Blueprint + prior chats |
WP-WATER-008 | P0 | Water balance & NRW | Record false positive, no-access, outage, repair-failure and overlapping-intervention cases explicitly. | water-balance + anomaly-engine + work-orders | Notion Blueprint + prior chats |
WP-WATER-009 | P0 | Water balance & NRW | Never mark litres or KSh as recovered until the defined verification window/method passes. | water-balance + anomaly-engine + work-orders | Notion Blueprint + prior chats |
WP-WATER-010 | P0 | Water balance & NRW | Support apparent/commercial loss investigations such as under-registration, zero-use occupied premises, meter bypass/tamper and billing/payment anomalies without labeling fraud before evidence. | water-balance + anomaly-engine + work-orders | Notion Blueprint + prior chats |
WP-OUTAG-001 | P1 | Outages, shortages & service | Model outage, shortage, rationing, low-pressure and planned-maintenance events with geographic/account impacts. | outage-management + notifications + resident/operator | Prior WaterPesa outage/error chats + Water Notes |
WP-OUTAG-002 | P1 | Outages, shortages & service | Support source/zone/property-level notices and resident subscriptions. | outage-management + notifications + resident/operator | Prior WaterPesa outage/error chats + Water Notes |
WP-OUTAG-003 | P1 | Outages, shortages & service | Distinguish no-supply from meter silence and from zero consumption. | outage-management + notifications + resident/operator | Prior WaterPesa outage/error chats + Water Notes |
WP-OUTAG-004 | P1 | Outages, shortages & service | Provide estimated restoration only when a source exists; otherwise show status without false ETA. | outage-management + notifications + resident/operator | Prior WaterPesa outage/error chats + Water Notes |
WP-OUTAG-005 | P1 | Outages, shortages & service | Correlate complaint clusters with supply/pressure telemetry. | outage-management + notifications + resident/operator | Prior WaterPesa outage/error chats + Water Notes |
WP-OUTAG-006 | P1 | Outages, shortages & service | Allow customer care to create/merge cases into an outage event. | outage-management + notifications + resident/operator | Prior WaterPesa outage/error chats + Water Notes |
WP-OUTAG-007 | P1 | Outages, shortages & service | Keep service notice publication/acknowledgement audit history. | outage-management + notifications + resident/operator | Prior WaterPesa outage/error chats + Water Notes |
WP-OUTAG-008 | P1 | Outages, shortages & service | Support multilingual English/Kiswahili notice templates. | outage-management + notifications + resident/operator | Prior WaterPesa outage/error chats + Water Notes |
WP-STORA-001 | P1 | Storage, pumps & facilities | Support tanks/reservoirs with capacity, level, inflow/outflow, refill state and estimated days/hours remaining. | storage-control + operator-web | Water Notes + housing/installers chats |
WP-STORA-002 | P1 | Storage, pumps & facilities | Support pump operational state, runtime, faults and maintenance evidence where integrated. | storage-control + operator-web | Water Notes + housing/installers chats |
WP-STORA-003 | P1 | Storage, pumps & facilities | Detect impossible tank-level/flow combinations and sensor drift as data-quality anomalies. | storage-control + operator-web | Water Notes + housing/installers chats |
WP-STORA-004 | P1 | Storage, pumps & facilities | Show property common-area water, tank loss and pump-room work orders. | storage-control + operator-web | Water Notes + housing/installers chats |
Showing first 100 filtered rows; the full registry remains in the repository CSV/JSON.