coldpass

rmonteiro-pereira/oblitus

GitHub ↗ · How this check works

Per-setup public labels: Linux / Haiku: Works · Linux / Luna: Works

Static status badge · SVG · read-only JSON. Embed with ![Coldpass status](https://coldpass.dev/badge/rmonteiro-pereira--oblitus.svg).

data

Works

The recorded run passed on 2 setups.

Answers apply to each recorded setup, revision and operation. Earlier observations remain in Run details.

Tested on Linux
PlatformHaikuLuna
Linuxyesyes

Linux / Haiku 5.5: yes · Oct 28, 2026 · b749ad13523f · claude-code / 2.1.310 (Claude Code)
Recorded operation: <guest-path> apply customers.csv --plan plan.json -o probe_anon.csv

Linux / Luna: yes · Oct 28, 2026 · b749ad13523f · codex / codex-cli 0.164.0
Recorded operation: uv run oblitus synthesize --schema examples/customers_schema.json --rows 20 -o customers.csv

Does what it says
1 of 1 claims checked out
  • Synthesize writes generated customer table: Real input produced the expected result: wrote 20 rows

    Source: Generates a synthetic table.

    Input: examples/customers_schema.json, 20 rows

    Expected: wrote 20 rows

    Command: uv run oblitus synthesize --schema examples/customers_schema.json --rows 20 -o claim-customers.csv

    Observed: wrote 20 rows to claim-customers.csv

MCP
No
Local or hosted
local
Local: runs on your machine
Needs keys or browser
None seen
Maintained
Maintained
actively maintained: last commit 0 days ago; 120 commits and 0 merged PRs in 90 days; 0 open issues, 0 open PRs; latest release 2026-10-28

Last commit Oct 28, 2026

Setup time
1 min 33 s
1 min 33 s to a working result
Issue
none found in recorded check
Examples
1 of 1 ran as expected
  • Synthesize sample customer rows: command completed successfully

    Source: README.md Quick start

    Input: examples/customers_schema.json, 20 rows

    Expected: wrote 20 rows

    Command: uv run oblitus synthesize --schema examples/customers_schema.json --rows 20 -o <guest-path>

    Observed: wrote 20 rows to <guest-path>

Evidence
README behavior checked
Agent interfaces
CLI
CLI

Observed interfaces were exercised by the checker. Documentation alone does not confirm compatibility.

Tested with
Codex / Luna
  • Linux: Codex / Luna · agent codex-cli 0.164.0 · Checked operation passed · Oct 28, 2026 on b749ad13523f

Each entry describes its recorded operation and source revision.

Safety
No unexpected network or file activity found in these checks

No problems traced to this repository code in these checks; a short run cannot prove safety. 22 static matches retained as context.

Reviewed as expected for a test run: attempted writes that failed, so nothing was written.

Full event, path and process lists for each observed setup:

Run details

Haiku 5.5

Native agent · Checked operation passed

Checked operation <guest-path> apply customers.csv --plan plan.json -o probe_anon.csv

Agent-reported scope: Install oblitus from PyPI into a Python 3.12 venv and run the README Quick start CLI pipeline: synthesize, scan, propose, apply (with protection check) and explore-noise, on a 2000-row sample customer table.

Run details
run
rmonteiro-pereira--oblitus-claude-haiku-5-5-1793170996247776568
date
Oct 28, 2026
time to working
213.4s
product hosting / execution
Local command in the guest
recorded operation scope
product operation
model
claude-haiku-5-5
agent / version
claude-code / 2.1.310 (Claude Code)
platform
linux
reported cost
$0.011350
Recorded source
https://github.com/rmonteiro-pereira/oblitus
Backend
hyperv
Tool transport
mcp-assigned-vm
Requested source pin (not an observed revision)
{"commit": "b749ad13523fc751618154ce050a44cfdc7400c4", "url": "https://github.com/rmonteiro-pereira/oblitus"}
Test version
readme-a0d0e27a4d0fd4c50903587087c25799260ee2578ee1953a6356df3e4fd02c35
revision
b749ad13523fc751618154ce050a44cfdc7400c4
Whose fault: not assigned · resolved

Safety: No problems traced to this repository code in these checks. 11 static matches retained as context.

No problems traced to this repository code in these checks. 11 static matches retained as context.

11 hardcoded secret matches retained as context; full list in the evidence.

OSV scanned supported lockfiles; unpinned dependencies and unsupported formats are outside this check.

A short run cannot establish that code is safe.

Connections show IP addresses; proxies can hide the final hostname.

Tracing covers dispatched commands and their children, not the whole OS; guest root can interfere with tracing.

Full safety evidence →

Answers recorded for this run
  • scan reports each column's category, sensitivity, confidence and evidence: Real input produced the expected result: the column name and the values both look like person names

    Source: Prints each column's category, sensitivity, confidence and evidence

    Input: customers.csv

    Expected: a per-column report including the name-detection evidence

    Command: <guest-path> scan customers.csv

    Observed: …the column name and the values both look like person names email email direct_identifier 0.99 100% of sampled values are valid email values and the column name agrees cpf cpf direct_identifier 1.00 100% of sampled values are valid CPF values and the column name agrees signup_date generic_datetime non_sensitive 0.85 no sign of personal data in the name or the values age age quasi_identifier 0.55 the column name suggests age plan gene

  • apply reports the protection level reached: Real input produced the expected result: result is anonymized

    Source: `wrote 2000 rows to customers_anon.csv; k-anonymity 1 -> 5; result is anonymized`

    Input: customers.csv with plan.json

    Expected: output reports result is anonymized

    Command: <guest-path> apply customers.csv --plan plan.json -o claim_anon.csv

    Observed: …result is anonymized warning: OBLITUS_SECRET_KEY is not set; pseudonymization plans will give different pseudonyms on every run

Examples

  • Quick start: generate a sample customer table from the bundled schema: command completed successfully

    Source: README.md Quick start

    Input: examples/customers_schema.json --rows 2000

    Expected: writes 2000 rows

    Command: <guest-path> synthesize --schema <guest-path> --rows 2000 -o ex_customers.csv

    Observed: wrote 2000 rows to ex_customers.csv

  • Quick start: write the noise explorer page for one column: command completed successfully

    Source: README.md Quick start

    Input: customers.csv --column monthly_spend

    Expected: writes the HTML page

    Command: <guest-path> explore-noise customers.csv --column monthly_spend -o ex_noise.html

    Observed: wrote ex_noise.html; open it in a browser

Local or hosted: local

What the agent did

Install oblitus from PyPI into a Python 3.12 venv and run the README Quick start CLI pipeline: synthesize, scan, propose, apply (with protection check) and explore-noise, on a 2000-row sample customer table.

cd <guest-path> && ls -la && cat README.md | head -c 7000; python3 --version
cd <guest-path> && tail -c +7000 README.md | head -c 8000; cat .python-version; ls .coldpass
cd <guest-path> && tail -c +15000 README.md | head -c 7000
cd /tmp && python3 -m venv <guest-path> && <guest-path> install -q --upgrade pip && <guest-path> install -q oblitus 2>&1 | tail -5; <guest-path> --help 2>&1 | head -40
mkdir -p <guest-path> && cd <guest-path> && export OBLITUS_SECRET_KEY="$(openssl rand -hex 32)" && O=<guest-path> && W=<guest-path> && $O synthesize --schema $W/examples/customers_schema.json --rows 2000 -o customers.csv; echo "rc=$?"; $O scan customers.csv; echo "rc=$?"; $O propose customers.csv --protection anonymization -o plan.json; echo "rc=$?"; ls -la
cd <guest-path> && export OBLITUS_SECRET_KEY="$(openssl rand -hex 32)" && O=<guest-path> && $O apply customers.csv --plan plan.json -o customers_anon.csv --report report.json; echo "rc=$?"; head -3 customers_anon.csv; $O explore-noise customers.csv --column monthly_spend -o monthly_spend_noise.html; echo "rc=$?"; ls -la
cd <guest-path> && cat > claims.json <<'EOF'
[
  {"kind":"claim","claim":"scan reports each column's category, sensitivity, confidence and evidence","source":"Prints each column's category, sensitivity, confidence and evidence","input":"customers.csv","expected":"a per-column report including the name-detection evidence","probe_kind":"cli","argv":["<guest-path>","scan","customers.csv"],"expected_text":"the column name and the values both look like person names","cwd":"<guest-path>"},
  {"kind":"claim","claim":"apply reports the protection level reached","source":"`wrote 2000 rows to customers_anon.csv; k-anonymity 1 -> 5; result is anonymized`","input":"customers.csv with plan.json","expected":"output reports result is anonymized","probe_kind":"cli","argv":["<guest-path>","apply","customers.csv","--plan","plan.json","-o","claim_anon.csv"],"expected_text":"result is anonymized","cwd":"<guest-path>"}
]
EOF
cat > probe.json <<'EOF'
{"kind":"cli","argv":["<guest-path>","apply","customers.csv","--plan","plan.json","-o","probe_anon.csv"],"cwd":"<guest-path>","expected_text":"result is anonymized"}
EOF
cat > examples.json <<'EOF'
[
  {"kind":"example","claim":"Quick start: generate a sample customer table from the bundled schema","source":"README.md Quick start","input":"examples/customers_schema.json --rows 2000","expected":"writes 2000 rows","argv":["<guest-path>","synthesize","--schema","<guest-path>","--rows","2000","-o","ex_customers.csv"],"cwd":"<guest-path>","env":{},"expected_text":"wrote 2000 rows to ex_customers.csv"},
  {"kind":"example","claim":"Quick start: write the noise explorer page for one column","source":"README.md Quick start","input":"customers.csv --column monthly_spend","expected":"writes the HTML page","argv":["<guest-path>","explore-noise","customers.csv","--column","monthly_spend","-o","ex_noise.html"],"cwd":"<guest-path>","env":{},"expected_text":"wrote ex_noise.html"}
]
EOF
cat > cycles.json <<'EOF'
{"detected":false,"checks":[],"reason":"Inspected README.md and the oblitus CLI help (scan, propose, apply, apply-many, reveal, infer-schema, synthesize, dp-synthesize, check-synthetic, dp-aggregate, explore-noise, challenge, keygen, techniques). These are one-shot batch commands with no cron, loop, webhook, scheduler or --once/--now trigger documented."}
EOF
for f in claims probe examples cycles; do python3 -I -c "import json,sys;json.load(open('$f.json'));print('$f ok')"; done
cd <guest-path> && <env-var>=<guest-path> python3 -I <guest-path> --validate --replay 2>&1 | tail -c 6000; echo "rc=${PIPESTATUS[0]}"
cd <guest-path> && ls /inputs/ 2>&1; (test -f /inputs/coldpass-preflight.py && <env-var>=<guest-path> python3 -I /inputs/coldpass-preflight.py --validate --replay 2>&1 | tail -c 1500; echo "rc=$?") ; git init -q 2>&1; git remote add origin https://github.com/rmonteiro-pereira/oblitus 2>&1; timeout 120 git fetch --depth 1 origin b749ad13523fc751618154ce050a44cfdc7400c4 2>&1 | tail -3; git reset --mixed FETCH_HEAD 2>&1 | tail -2; git rev-parse HEAD
cd <guest-path> && mkdir -p .coldpass && cat > .coldpass/report.json <<'EOF'
{"outcome":"working","fault_owner":null,"operation":"Install oblitus from PyPI into a Python 3.12 venv and run the README Quick start CLI pipeline: synthesize, scan, propose, apply (with protection check) and explore-noise, on a 2000-row sample customer table.","operation_scope":"CLI only, Linux, Python 3.12.3 (matches .python-version and README 'Python 3.12 or later'). No optional extras, no browser (explore-noise HTML was written but not opened), no DuckDB/Spark/OpenDP/AIM/Anonymeter. Repo pytest suite not run.","steps":["python3 -m venv <guest-path>; pip install oblitus (README Install)","oblitus synthesize --schema examples/customers_schema.json --rows 2000 -o customers.csv (Quick start)","oblitus scan customers.csv","oblitus propose customers.csv --protection anonymization -o plan.json","oblitus apply customers.csv --plan plan.json -o customers_anon.csv --report report.json","oblitus explore-noise customers.csv --column monthly_spend -o monthly_spend_noise.html"],"deviations":["Installed the published PyPI package with pip in a venv instead of cloning and running uv sync; the README lists pip install oblitus as the install route.","The workspace had no git metadata; ran git init, remote add, fetch --depth 1 and reset --mixed to the pinned commit b749ad13.","/inputs/coldpass-preflight.py is not present in this guest; validation was run with <guest-path> instead.","OBLITUS_SECRET_KEY was set for the quick-start steps; the probe and claim apply runs had it unset and printed the documented warning on stderr (pseudonymization plans give different pseudonyms per run). Output still reported result is anonymized.","Quick-start demo files were written to <guest-path>, not the workspace."],"stuck_step":null,"main_blocker":null,"plain_failure":null,"suggested_fix":"None required for the exercised CLI path. Optional: run the repo's uv run pytest suite and the optional-extra commands for full coverage."}
EOF
python3 -I -c "import json;json.load(open('.coldpass/report.json'));print('report ok')"; <env-var>=<guest-path> python3 -I <guest-path> --validate --replay 2>&1 | head -c 400; echo; git status --short | head
Earlier attempts (1)

Luna

Native agent · Checked operation passed

Checked operation uv run oblitus synthesize --schema examples/customers_schema.json --rows 20 -o customers.csv

Agent-reported scope: Synthesize a sample customer table and scan its columns

Run details
run
rmonteiro-pereira--oblitus-gpt-6-luna-1793171779119405557
date
Oct 28, 2026
time to working
92.9s
product hosting / execution
Local command in the guest
recorded operation scope
product operation
model
gpt-6-luna
agent / version
codex / codex-cli 0.164.0
platform
linux
reported cost
not reported (not assumed free)
Recorded source
https://github.com/rmonteiro-pereira/oblitus
Backend
hyperv
Tool transport
mcp-assigned-vm
Requested source pin (not an observed revision)
{"commit": "b749ad13523fc751618154ce050a44cfdc7400c4", "url": "https://github.com/rmonteiro-pereira/oblitus"}
Test version
readme-aa754f4e5e27cce52510e3f31b42346f17ae7c45ce009399060d7315812d459d
revision
b749ad13523fc751618154ce050a44cfdc7400c4
Whose fault: not assigned · resolved

Safety: No problems traced to this repository code in these checks. 11 static matches retained as context.

No problems traced to this repository code in these checks. 11 static matches retained as context.

Reviewed as expected for a test run: attempted writes that failed, so nothing was written.

11 hardcoded secret matches retained as context; full list in the evidence.

OSV scanned supported lockfiles; unpinned dependencies and unsupported formats are outside this check.

A short run cannot establish that code is safe.

Connections show IP addresses; proxies can hide the final hostname.

Tracing covers dispatched commands and their children, not the whole OS; guest root can interfere with tracing.

Full safety evidence →

Answers recorded for this run
  • Synthesize writes generated customer table: Real input produced the expected result: wrote 20 rows

    Source: Generates a synthetic table.

    Input: examples/customers_schema.json, 20 rows

    Expected: wrote 20 rows

    Command: uv run oblitus synthesize --schema examples/customers_schema.json --rows 20 -o claim-customers.csv

    Observed: wrote 20 rows to claim-customers.csv

Examples

  • Synthesize sample customer rows: command completed successfully

    Source: README.md Quick start

    Input: examples/customers_schema.json, 20 rows

    Expected: wrote 20 rows

    Command: uv run oblitus synthesize --schema examples/customers_schema.json --rows 20 -o <guest-path>

    Observed: wrote 20 rows to <guest-path>

Local or hosted: local

What the agent did

Synthesize a sample customer table and scan its columns

pwd; ls -la; rg --files -g 'README*' -g 'pyproject.toml' -g 'package.json' -g 'requirements*.txt' -g '*.sln' -g 'Makefile' -g 'Dockerfile' -g 'AGENTS.md' -g '*.yml' -g '*.yaml' | head -80
cat README.md; cat .python-version; python3 --version; python3 -m pip --version; find . -maxdepth 3 -type f | sort | head -100
command -v uv || true; python3 -m venv /tmp/oblitus-venv; /tmp/oblitus-venv/bin/python --version
uv sync
export OBLITUS_SECRET_KEY="$(openssl rand -hex 32)"; uv run oblitus synthesize --schema examples/customers_schema.json --rows 20 -o /tmp/customers.csv; uv run oblitus scan /tmp/customers.csv
mkdir -p .coldpass; cat > .coldpass/probe.json <<'EOF'
{"kind":"cli","argv":["uv","run","oblitus","scan","<guest-path>"],"cwd":"<guest-path>","expected_text":"customer_id              record_id"}
EOF
cat > .coldpass/claims.json <<'EOF'
[{"kind":"claim","claim":"Scan classifies table columns","source":"Prints each column's category, sensitivity, confidence and evidence","input":"examples/customers_schema.json synthesized to CSV","expected":"customer_id classified record_id","probe_kind":"cli","argv":["uv","run","oblitus","scan","<guest-path>"],"expected_text":"customer_id              record_id","cwd":"<guest-path>"}]
EOF
cat > .coldpass/examples.json <<'EOF'
[{"kind":"example","claim":"Synthesize sample customer rows","source":"README.md Quick start","input":"examples/customers_schema.json, 20 rows","expected":"wrote 20 rows","argv":["uv","run","oblitus","synthesize","--schema","examples/customers_schema.json","--rows","20","-o","<guest-path>"],"cwd":"<guest-path>","expected_text":"wrote 20 rows"}]
EOF
cat > .coldpass/cycles.json <<'EOF'
{"detected":false,"checks":[],"reason":"Inspected README command line and quick start; no scheduler, recurring cycle, webhook, --once, or --now operation is documented."}
EOF
cat > .coldpass/report.json <<'EOF'
{"outcome":"working","fault_owner":null,"operation":"Synthesize a sample customer table and scan its columns","operation_scope":"Python 3.12 CLI using the bundled customer schema","steps":["uv sync","uv run oblitus synthesize --schema examples/customers_schema.json --rows 20 -o /tmp/customers.csv","uv run oblitus scan /tmp/customers.csv"],"deviations":[],"stuck_step":null,"main_blocker":null,"plain_failure":null,"suggested_fix":null}
EOF

<env-var>=<guest-path> python3 -I <guest-path> --validate --replay
sed -i 's#<guest-path>' .coldpass/probe.json .coldpass/claims.json; sed -i 's/"expected_text":"customer_id              record_id"/"expected_text":"customer_id              record_id","cwd":"<guest-path>"/' .coldpass/probe.json; cat > .coldpass/probe.json <<'EOF'
{"kind":"cli","argv":["uv","run","oblitus","synthesize","--schema","examples/customers_schema.json","--rows","20","-o","customers.csv"],"cwd":"<guest-path>","expected_text":"wrote 20 rows"}
EOF
cat > .coldpass/claims.json <<'EOF'
[{"kind":"claim","claim":"Synthesize writes generated customer table","source":"Generates a synthetic table.","input":"examples/customers_schema.json, 20 rows","expected":"wrote 20 rows","probe_kind":"cli","argv":["uv","run","oblitus","synthesize","--schema","examples/customers_schema.json","--rows","20","-o","claim-customers.csv"],"cwd":"<guest-path>","expected_text":"wrote 20 rows"}]
EOF

<env-var>=<guest-path> python3 -I <guest-path> --validate --replay