Docs / Phase 17

Phase 17 Civic Geo Claims Report

Flags, continents, city/council navigation, KYC/residency claims, campaigns, privacy, and voting safeguards.

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/voting now requires an authenticated session.
  • The voting account must resolve to an active world_identities row and active civic_identities row.
  • 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_id remains 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 cities500 is 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.