Skip to main content

Deterministic synthetic identity graphs for privacy-system evaluation

Project description

SynthWorld

CI PyPI Python versions License: Apache-2.0 Coverage: 100% enforced

SynthWorld generates deterministic, connected identity graphs for testing privacy, PII-extraction, entity-resolution, and exposure-analysis systems without collecting or fabricating data about real people. It began as the ground-truth harness for Idcognito and is deliberately usable as an independent Apache-2.0 Python package.

Every record is explicitly marked synthetic: true. Email addresses use the reserved example.test domain, phone numbers use the fictional North American 555-01xx block, addresses contain obvious example components, and national identifiers carry a SYN- prefix with deliberately invalid checksums. Do not replace these safeguards with plausible real-world identifiers.

What it provides

  • seeded personas, identity attributes, and evidence-backed relationships;
  • public exposure records for breach, broker, search, and social scenarios;
  • exact-span extraction pages with evaluator-only answer keys;
  • adversarial entity-resolution cases and relationship ground truth;
  • risk-calibration cases with public observations physically separated from evaluator-only score and factor truth; and
  • frozen, checksummed benchmarks plus machine-readable integrity metrics.

The core-world, exposure-corpus, extraction-corpus, connection-benchmark, and risk-benchmark schemas are independently versioned 1.0.0 contracts. See DATA_DICTIONARY.md for field definitions and the strict public/oracle boundary. See GOLDEN_REVIEW.md for the frozen benchmark review record.

Install

The distribution is published as idcognito-synthworld; the import package and the CLI are both named synthworld, and the package ships typed (py.typed). Release notes live in CHANGELOG.md.

pip install idcognito-synthworld
synthworld generate --seed 20260719 --persona-count 10 --output world.json

Develop from source

Install uv, clone the repository, and run:

uv sync --locked --all-groups
uv run synthworld generate --seed 20260719 --persona-count 10 --output world.json
uv run synthworld metrics --seed 20260719 --persona-count 10

Useful corpus commands include:

uv run synthworld generate-corpus --seed 20260719 --persona-count 10 --output exposures.json
uv run synthworld generate-extraction --seed 20260719 --persona-count 10 --output extraction.json
uv run synthworld generate-public-connections --seed 20260719 --persona-count 10 --output connections.json
uv run synthworld generate-risk-public --seed 20260719 --persona-count 10 --output risk.json

See examples/ for a worked exact-span extraction evaluation and annotated sample output.

The generate-connection-benchmark and generate-risk-answer commands include or emit evaluator-only truth. Keep those artifacts outside product and demo data paths. The public commands emit only product-safe observations.

Verify every claim

make ci runs formatting, linting, strict type checking, all tests with 100% branch coverage, benchmark metrics at 10- and 100-persona scales, package inspection, and an isolated-wheel smoke test. The same gates run on Python 3.12 and 3.14 in GitHub Actions; a separate workflow job scans the repository's full history for secrets.

make ci

Generated JSON is safe for fixtures, demos, tutorials, and evaluation when its synthetic markers remain intact. SynthWorld is not a source of real identity data and must never be used to impersonate, target, or investigate a person.

License

Copyright 2026 Idcognito contributors. Licensed under the Apache License 2.0.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

idcognito_synthworld-0.7.0.tar.gz (107.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

idcognito_synthworld-0.7.0-py3-none-any.whl (61.1 kB view details)

Uploaded Python 3

File details

Details for the file idcognito_synthworld-0.7.0.tar.gz.

File metadata

  • Download URL: idcognito_synthworld-0.7.0.tar.gz
  • Upload date:
  • Size: 107.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for idcognito_synthworld-0.7.0.tar.gz
Algorithm Hash digest
SHA256 b9177299109e3a5936e15a878b809c0ed483b8ca1c7228845a81f9c9bbee8e5e
MD5 5c4e88429c15fb7d117485c11430e3ca
BLAKE2b-256 5127302f85b0d7e9f8c8e12ad7e679b5cfa373df9469b33d85c13af3884e1380

See more details on using hashes here.

Provenance

The following attestation bundles were made for idcognito_synthworld-0.7.0.tar.gz:

Publisher: release.yml on bluntmachetti/synthworld

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file idcognito_synthworld-0.7.0-py3-none-any.whl.

File metadata

File hashes

Hashes for idcognito_synthworld-0.7.0-py3-none-any.whl
Algorithm Hash digest
SHA256 30df71b43e97c73ca71a74ed1fab5fd15498daf2f5290f6b52b5012ef832610e
MD5 20c4bbc50b030b23d9184b2f18538cb1
BLAKE2b-256 7eb8c344dd45a87a8664d5fdc012baf5227e5492020e293892e4cebe790d510e

See more details on using hashes here.

Provenance

The following attestation bundles were made for idcognito_synthworld-0.7.0-py3-none-any.whl:

Publisher: release.yml on bluntmachetti/synthworld

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page