Skip to content

content: add 4 South Africa canons, fix the FICA proof-of-address claim - #165

Merged
dbwls99706 merged 2 commits into
mainfrom
canon/za-banking-legal-medical-mental-health
Aug 18, 2026
Merged

content: add 4 South Africa canons, fix the FICA proof-of-address claim#165
dbwls99706 merged 2 commits into
mainfrom
canon/za-banking-legal-medical-mental-health

Conversation

@dbwls99706

@dbwls99706 dbwls99706 commented Aug 14, 2026

Copy link
Copy Markdown
Owner

What this adds

Four South Africa country canons:

  • banking/proof-of-address-barrier/za — proof of residential address has not been a legal FICA requirement since 2 October 2017, when Government Notice R1062 (Government Gazette 41154) repealed the regulations mandating it. FIC Guidance Note 7A now lists it as one optional supplementary attribute an institution's own Risk Management and Compliance Programme may request. A branch insisting on a utility bill is applying policy, not law — and the SAPS Commissioner-of-Oaths affidavit route exists for people without one.
  • legal/tax-residency-not-simple-day-count/za — SARS's primary test is the fact-specific "ordinarily resident" test, not a day count at all. Only if that does not apply does the physical presence test kick in: >91 days this year, >91 days in each of the preceding 5 years, and >915 days total across those 5 — considerably stricter than the "183 days" figure people import from other tax systems.
  • medical/uninsured-emergency-cost/za — Constitution s27(3) bars refusing emergency treatment, but that is not the same as free: foreign nationals are billed as non-subsidised, full-paying patients under the provincial Uniform Patient Fee Schedule regardless of income, unlike citizens and residents who may qualify for subsidised H1/H2 bands.
  • mental-health/crisis-line-not-emergency-dispatch/za — SADAG's Suicide Crisis Helpline (0800 567 567, also SMS 31393) is telephonic counselling and referral, not dispatch. Dispatch is 10111 (police), 10177 (ambulance), 112 (mobile).

Correction to an existing canon

banking/foreigner-account-opening-fica/za (landed by #170) stated that "FICA requires accountable institutions to verify both identity and residential address." That has been wrong since the 2017 repeal above, and it directly contradicts the new canon in this PR.

Reworded so the legal claim is correct while the practical advice stands unchanged — branches do still ask for address proof, and a landlord/employer/councillor letter or apostilled foreign proof satisfies them. The two canons are now cross-linked in both directions: one is the path through the branch, the other is the legal position to cite when a branch defends the demand as a FICA obligation.

Sources: fic.gov.za (Guidance Note 7A), mjkinc.co.za (analysis of GN R1062 / GG 41154), idchecker.co.za (SAPS affidavit process), sars.gov.za (foreign employment income exemption page, Interpretation Note 4 PDF), sahrc.org.za, gov.za (Gauteng Health UPFS statement, SADAG contact sheet), saps.gov.za.

Rebased onto main — what changed since the original version

This branch was opened before #170 merged and was six commits behind. The three re-verified code canons (docker/compose-depends-on-unhealthy, nextjs/async-params-nextjs15, rust/e0521-borrowed-data-escapes) now take main's version: #170 re-verified all three on 2026-08-16 and already carries the moved Next.js doc URLs this branch had also caught. Every content PR selects "the 3 oldest last_confirmed canons" by the same deterministic rule, so parallel branches land on exactly the same files and collide on the date fields; dropping the re-verification here removes the conflict without losing anything.

Checks

  • ruff check generator/ tests/ — clean
  • python -m pytest tests/ -q — 337 passed
  • python -m generator.validate --data-only — PASSED (2484 canons, 0 stale)
  • python -m generator.build_site + --site-only — PASSED

Verified this branch merges cleanly alongside #166, #168, and #172 in any order.

…nons

New South Africa (za) canons fill genuine gaps - za previously had only
4 of 12 country-scoped domains covered (emergency, safety, visa):

- banking/proof-of-address-barrier/za - proof of residential address has
  not been a legal FICA requirement since the 2 Oct 2017 repeal (GN R1062,
  GG 41154); banks that still insist on it are applying internal policy,
  not law, and a SAPS affidavit route exists as an alternative
- mental-health/crisis-line-not-emergency-dispatch/za - SADAG's 24/7
  Suicide Crisis Helpline (0800 567 567) is counselling/referral, not
  dispatch; real emergencies need 10111/10177/112
- medical/uninsured-emergency-cost/za - Constitution s27(3) bars refusing
  emergency treatment, but foreign nationals are billed as non-subsidised,
  full-paying patients under the provincial Uniform Patient Fee Schedule
  regardless of income
- legal/tax-residency-not-simple-day-count/za - SARS's primary test is the
  fact-specific "ordinarily resident" test, not a flat day count; the
  fallback physical presence test needs >91 days this year, >91 days in
  each of the prior 5 years, and >915 days total across those 5 years

Also re-verifies the next 3 oldest-dated canons (last_confirmed
2026-02-01, the earliest bulk-generation cohort) as part of the ongoing
rolling re-verification to avoid a staleness wall as the Feb 2026 batch
crosses 365 days:

- docker/compose-depends-on-unhealthy/docker27-linux - all sources still
  valid, no changes
- rust/e0521-borrowed-data-escapes/rust1-linux - all sources still valid,
  no changes
- nextjs/async-params-nextjs15/next15-linux - content unchanged but two
  Next.js doc URLs moved to new canonical paths (upgrading/version-15 and
  upgrading/codemods both moved under /guides/; rendering/server-components
  moved to /getting-started/server-and-client-components), updated

Claude-Session: https://claude.ai/code/session_01Fj9oPLXsxJLwLggQ4xLBG6

Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
@vercel

vercel Bot commented Aug 14, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
deadends-dev Ready Ready Preview Aug 18, 2026 1:10am

main (#170) landed South Africa coverage and re-verified the same three
code canons this branch had refreshed.

- Took main's version of docker/compose-depends-on-unhealthy,
  nextjs/async-params-nextjs15, and rust/e0521-borrowed-data-escapes.
  main re-verified all three on 2026-08-16, including the moved Next.js
  doc URLs this branch had also caught.
- main's banking/foreigner-account-opening-fica/za stated that FICA
  requires accountable institutions to verify residential address. That
  stopped being true on 2 October 2017, when Government Notice R1062
  (Government Gazette 41154) repealed the regulations mandating it; FIC
  Guidance Note 7A now treats address as an optional supplementary
  attribute an institution's own Risk Management and Compliance Programme
  may request. Reworded that canon so the legal claim is correct while its
  practical advice - branches do still ask, and a landlord/employer letter
  or apostilled foreign proof satisfies them - stands unchanged.
- Cross-linked the two banking canons in both directions so the practical
  path and the legal position read as complements rather than a
  contradiction.

New canons: the proof-of-address repeal and the SAPS affidavit route, the
ordinarily-resident tax residency test (not a flat 183-day count),
non-subsidised UPFS billing for uninsured visitors at public hospitals,
and SADAG's helpline not being a dispatch service.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Ksw62KukVY7Ft7e8zZGhrp
@dbwls99706 dbwls99706 changed the title content: add 4 South Africa country canons, re-verify 3 aging code canons content: add 4 South Africa canons, fix the FICA proof-of-address claim Aug 18, 2026
dbwls99706 added a commit that referenced this pull request Aug 18, 2026
Four PRs (#165, #166, #168, #172) sat unmergeable at once with green CI,
blocked by the content workflow itself in three ways.

1. Every cycle re-verified "the canons with the oldest last_confirmed", a
   deterministic rule, so parallel cycles picked the same files and all
   but the first to merge conflicted on the date fields they came to
   refresh. generator.reverify now assigns each cycle a bucket fixed by
   hashing the canon ID - not by position in the aging list, which would
   shift its boundaries whenever a merge aged canons in or refreshed
   them and let two cycles land on overlapping-but-unequal slices. Two
   seeds now own the same bucket or share nothing; a partial overlap
   cannot occur. It also excludes canons other pushed branches touch,
   and reports when that scan could not read every branch rather than
   passing an unchecked scan off as clean.

2. Nothing said to check open PRs before picking a target, so three
   sessions each chose New Zealand off the same view of main. Step 2 now
   claims a target against the open PR list first.

3. The duplicate check grepped for an identical slug, while every
   duplicate that shipped used a different slug for the same dead end.
   The check is now by topic, and partial overlap gets narrowed and
   cross-linked or folded into the existing canon.

Also documents the re-verification contract: re-read every source before
bumping any date.
@dbwls99706
dbwls99706 merged commit 4842857 into main Aug 18, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants