Phase 17 Civic Geo / Claims Report
Date: 2026-05-18
Live Surface
- Page:
/governance - Geo API:
/api/v2/geo - Governance claims API:
/api/v2/governance/claims - Voting API hardening:
/api/v2/voting - Public citizen privacy:
/citizens/[worldId]and/api/v2/citizens/[worldId]
Data Coverage
- Continents: grouped from
geo_continents. - Countries: 250 rows from REST Countries.
- Flags: 250/250 countries have flag emoji, with API fallback from ISO-3166 alpha-2 code.
- Cities/councils: 232,902 rows from GeoNames
cities500, paginated server-side.
Claim And Campaign Rules
- Claim Council requires authenticated World ID, verified identity/KYC/eID, and council-level residency proof or pending proof submission.
- Claim Minister requires authenticated verified identity plus residency proof and official mandate/reference URL or mandate reference.
- Claim Presidency requires authenticated verified identity plus national residency proof and official mandate/reference URL or mandate reference.
- Claims are public by World ID, not legal name.
- Campaign statements are stored beside the claim and visible in the public governance page.
- Approval remains human/authority reviewed; the platform does not auto-install presidents, ministers, or mayors from a form submission.
Voting Safeguards
POST /api/v2/votingnow requires an authenticated session.- The voting account must resolve to an active
world_identitiesrow and activecivic_identitiesrow. - KYC/eID/DIDIT verification is required.
- Country and council-scoped votes require verified residency in that country/council.
- Duplicate votes are still blocked by
(proposal_id, civic_id)uniqueness.
Privacy And Traceability
world_identities.world_idremains unique: one public World ID per human record.- Public citizen pages show a public alias or World ID unless
public_name_visible=true. - Demo citizens remain public-name visible because they are synthetic and labelled.
- Authority tracing is preserved through World ID, KYC/eID rows, biometric sessions, and audit records.
Hard Critique
- GeoNames
cities500is a strong populated-place baseline but not a complete legal municipality register. National statistical/council registries and OSM boundary reconciliation are still needed. - Residency proof submissions are represented as proof references/status, not encrypted document storage. Production needs object storage, expiry, revocation, and reviewer UI.
- Claim approval is intentionally pending-review only. Real minister/presidency activation needs official mandate registry checks, eIDAS/OIDC provider credentials, legal review, and appeal workflow.
- Biometric login is Didit hosted camera/liveness/face-match; native fingerprint devices depend on WebAuthn/passkey support from the browser and OS.
- The platform is responsive at the component level, but full browser-device testing across all 80+ routes is still a recurring release gate.