Security and compliance posture

The mechanisms that actually exist, each named with the artefact that evidences it.

This page describes implemented and in-build controls. Where a control is in build we say so rather than implying coverage; where a driver is a mock we label it a mock. Wynk Systems holds no certification it does not name here.

The four load-bearing claims

Row-level security

Tenant isolation is enforced by the database, not by application code remembering to filter. Every tenant table carries FORCED row-level security and every read runs inside a tenant-scoped transaction, so a query issued without a tenant context returns nothing rather than everything.

Hash-chained audit

Audit and ledger records each commit a SHA-256 over their predecessor. History cannot be edited quietly: a rewrite breaks the chain at the exact record it touched, and an independent verifier recomputes from origin and raises a fork as a blocking alarm.

POPIA

Personal information is collected against a declared purpose and a retention clock, data subjects get self-service access and erasure, logs and URLs are free of personal identifiers, and a discharged erasure destroys the per-subject key.

Two-eyes dual control

Money-adjacent and override actions require a second, distinct operator. The requester cannot approve their own request, the pending state is visible in the interface, and the grant of authority is itself recorded — the UI never implies an override is one click.

Control register

Page 3 of 4 · 30 controls. Wide rows scroll inside the table, not the page.

Across all 4 pages: ✓ Live 27 · ◐ In build 3. In-build controls are not load-bearing yet and a risk assessment should treat them as absent.

Wynk Systems control register
AreaControlHow it is enforcedStatusEvidence
POPIANo personal information in logs or URLsStructured logging redacts identifiers and PAN-shaped values; identifiers travel in the body or the path as opaque ids, never as query strings.✓ LiveGate G-REDACT
POPIACrypto-shredding on erasurePer-subject keys are destroyed on a discharged erasure, rendering residual ciphertext in backups unreadable.◐ In buildADR-S-0146
Financial crimeKYC with a documented verification chainIdentity verification records its source, its timestamp and its operator; a manual override is a two-eyes event.✓ LiveADR-S-0071
Financial crimeKYB and beneficial-ownership captureEntity onboarding resolves directors and ultimate beneficial owners against CIPC records held with their retrieval evidence.◐ In buildADR-S-0121
Financial crimeSanctions, PEP and adverse-media screeningScreening holds are explicit states in the workflow; a held payment cannot be released by the operator who raised it.✓ LiveADR-S-0118
Financial crimegoAML regulatory reportingSTR and CTR packs generate from ledger facts and carry a submission lifecycle: draft, signed off, submitted, acknowledged.✓ LiveADR-S-0133
RegulatoryNCA affordability and cost-of-credit capsReg 42–44 caps are enforced in a Python kernel with a contract test against the TypeScript path; a breach refuses origination.✓ LiveGate G-NCA
RegulatoryReg 23A capital and Basel 3.1 treatmentRisk weights and capital consumption are computed per exposure and reconcile to the BA returns.✓ LiveADR-S-0044

What we do not claim

Independent reviewers get the evidence pack — chain attestation, control register, exception log and the sampling workfile — rather than a slide deck. ✓ Live means the mechanism is in this codebase and on the gate board today.