Pass 2.5 local provenance audit
Audit date: 2026-09-03 (America/Argentina/Buenos_Aires).
Scope and safety
This was a bounded, local, read-only evidence acquisition. /media/matias/Elements was treated as immutable: no writes, extraction, rename, move, deletion, permission change, or timestamp change were performed there. No national extraction was run. No sibling repository was changed. ZIP members were read with zipinfo/unzip -p; no archive needed extraction. No census records are reproduced here.
Statements are deliberately labelled OBSERVED, INFERRED, or UNKNOWN. Filenames and mtimes are inventory attributes, not provenance proof.
Evidence roots
- OBSERVED: source/legacy root:
/media/matias/Elements/CENSO_dirs. - OBSERVED: current evidence root:
/media/matias/Elements/CENSO_work(provenance,logs,profiles,rxdb,frames,samples,targets, plus test debris undertmp). - OBSERVED: static implementation roots:
/home/matias/repos/censo2022arg_1.0.1/censo2022arg, this repository, and/home/matias/repos/argentina-censo2022-rxdb. - OBSERVED: the bounded filesystem census returned 1,199 entries through depth 3 in
CENSO_dirsand 100 inCENSO_work; deeperCENSO_work/tmpcontains voluminous test debris and was not promoted to evidence.
The reproducible metadata inventories are local_artifact_manifest.tsv, archive_inventory.tsv, candidate_source_hashes.tsv, and radio_evidence.tsv. The artifact manifest intentionally records relevant primary sources and durable work products, rather than recursively hashing legacy 1991/2001/2010 microdata, large derived frames, samples, or test debris. Those exclusions avoid giant, low-value reads.
Source artifact inventory
OBSERVED: four top-level files are directly relevant: the 1,188,760,157-byte bases ZIP, 5,348,532-byte metadata ZIP, 56,859,538-byte portable runtime ZIP, and 10,582-byte PERSONA.parquet. Their byte sizes, filesystem mtimes, and SHA-256 values are in the manifests. Censo_2010/ and Censo_2010_p/ are older-census trees and were identified but not recursively hashed. The bases ZIP has 26 entries and 1,188,756,335 uncompressed bytes.
OBSERVED: the bases ZIP contains exactly:
Base_VP: eight RBFX companions pluscpv2022.rxdb;Base_ PO_A_IG(note the literal space): six RBFX companions pluscpv2022.rxdb;Base_VC_PSC: five RBFX companions pluscpv2022_col.rxdb;- three directory entries and
LEEME.txt.
All member sizes and ZIP timestamps are in archive_inventory.tsv. The archive is effectively stored (only LEEME.txt is deflated). The three RXDB hashes were independently streamed from the ZIP. Existing legacy-source-manifest-check.txt reports OK for all 23 RXDB/RBFX members against source-april-2025.json.
April-source custody assessment
OBSERVED: the bases archive SHA-256 is fc72bd93…f58b2838, identical to CENSO_work/provenance/archive-zips.sha256. Its three streamed RXDB hashes are:
- VP:
abcc06e8…15edb246(1,423,033 bytes); - PO_A_IG:
c6adab6d…9cbed84(229,847 bytes); - VC_PSC:
d444ac25…f8689fe(81,265 bytes).
OBSERVED: those hashes/sizes and all 20 RBFX hash/size pairs match source-april-2025.json; the recorded all-member check is also complete. This is content identity, not a filename/mtime inference.
INFERRED (strong): the preserved ZIP contains the exact three-database corpus fingerprinted as release_label: april-2025 and used as the source reference for the April/May research. Twenty-three independent member content matches plus the archive checksum strongly identify the bytes. The inference concerns the historical act of use: the later custody JSON names an old /home/matias/Documents/... root, and no contemporaneous acquisition receipt or immutable run manifest binds the April/May process directly to this archive object.
UNKNOWN: who downloaded the archive, the upstream URL and download time, and whether the filesystem mtime reflects acquisition are not established.
Search for July replacement
The local search was restricted to the two evidence roots and the three supplied repositories. It matched case-insensitive alternate bases_censo2022_RedatamX*.zip, cpv2022.rxdb, the three Base_* directory spellings, and likely old work copies.
OBSERVED (negative): only the preserved bases ZIP was found; no standalone cpv2022.rxdb or alternate Census-2022 Base_VP, Base_PO_A_IG/Base_ PO_A_IG, or Base_VC_PSC tree was present in those roots. No July-labelled candidate was present.
UNKNOWN: an April-vs-July byte/schema comparison cannot be performed without July bytes or a trustworthy July manifest. The search says nothing about unsearched disks/roots.
Search for ARG2022
OBSERVED (negative): no ARG2022.rds, ARG2022.zip, ARG2022.csv, or comparably named data artifact was found in the supplied roots. Only docs/spec/03_ARG2022_ADAPTER_SPEC.md appeared in the two project repositories. Searches for Mauricio and Open-REDATAM yielded no local data candidate.
UNKNOWN: ARG2022 schema, content, creator, chain of custody, and relationship to Open-REDATAM remain unavailable locally.
PERSONA.parquet assessment
OBSERVED: PERSONA.parquet is 10,582 bytes, SHA-256 d6c9fb0b…4357de1, one row group, five rows, and 15 nullable int64 columns: PERSONA_REF_ID, HOGAR_REF_ID, P01, P02, P03, P05, P06, P07, P12, EDADAGRU, EDADQUI, P08, P09, P10, CONDACT. Footer metadata says parquet-cpp-arrow 17.0.0, PyArrow 17.0.0, pandas 2.2.2, and a range index of five rows.
OBSERVED: its footer has no source URL, source hash, author, execution command, geography, or ARG2022/Mauricio marker. Nearby top-level files do not supply a manifest binding it to a producer.
INFERRED: it is a tiny development/sample artifact, not a national corpus. UNKNOWN: how it was generated and by whom. It must not be attributed to Mauricio.
Existing CENSO_work evidence timeline
Filesystem mtimes order the surviving artifacts but do not prove event time:
- OBSERVED: 2026-09-02 01:13–01:16 —
source-april-2025.json, archive checksums, and the 23-memberOKcheck establish custody fingerprints. - OBSERVED: 01:32 —
vp-inspection.jsonrecords redatamx 1.1.3 / RedEngine 1.1.0-final capabilities: selection, NUMBER, inherited DEFINE, and FREQ true;cmpcodeand TABLE VIEW false; inspected hierarchy marked incomplete. - OBSERVED: 01:34–01:57 — repeated radio
061120902runs fail first on missing/non-integer identity and then null inheritedXVID.redengine11-generated-ids-061120902.txtshows NUMBER-derived IDs and FREQ masks. Versionv5passes after selection-code geography fallback and corrected ancestor definitions. - OBSERVED: 02:01–02:08 — accepted runs for
061120902and061471101; the latter is copied into them3-*manifest, validation, and artifact checksum set. - OBSERVED: 02:17 — frame
arg-cpv2022-frame-8e135fba13e79073passes with 73 dwellings, 56 households, 137 persons, one department. - OBSERVED: 02:28 —
064279901passes;/usr/bin/timereports 150.36 seconds wall time and 1,342,200 KB maximum RSS.
INFERRED: this is a coherent source-fingerprint → inspection → generated-ID experiments → accepted radio slices → frame sequence. UNKNOWN: the logs do not cryptographically bind each extraction to the preserved RXDB; their database path points to the old Documents tree.
Duran vs rxdb-extractor mechanism comparison
argentina-censo2022-rxdb is an adapter/frame layer, not a third engine extractor: it discovers source layouts and builds/hashes a frame from validated rxdb-extractor Parquet slices (sources.py:57-85, manifest.py:36-85, frame.py:77-85,199-250,271-395).
| Dimension | Duran censo2022arg |
rxdb-extractor / Argentina adapter |
|---|---|---|
| Extraction primitive | Native C/C++ RedEngine output iteration and TABLE VIEW (src/red_execute.cpp:82-162,331-400; R/extraer_rxdb.R:247-250) |
R/JSON bridge emits SPC FREQ; planner composes FREQ (src/rxdb_extractor/frequency.py:32-44, planner.py:45-85) |
| Identity | Reconstructs dwelling/household identifiers by scanning flat rows (R/extrae_censo.R:113-166) |
Defines entity sequences with NUMBER RADIO; canonical key is radio:sequence (hierarchy.py:20-55, identity.py:14-52) |
| Hierarchy | Reconstructed from changing hierarchy variables in TABLE VIEW rows | Explicit ancestor definitions and foreign keys; profile topology compensates for incomplete engine hierarchy (hierarchy.py:29-55, dataset.py:104-138) |
| Batching | Variable blocks with repeated control columns, default bounded width (R/extrae_censo.R:42-100; R/extraer_rxdb.R:212-224) |
Identity backbone plus payload batches, merged by explicit IDs (planner.py:45-85, executor.py:37-91) |
| Row position | Validates equal row counts/control columns, then appends columns by position (R/extrae_censo.R:355-405; R/extraer_rxdb.R:313-335) |
Explicitly merges by identity tuple, never row position (executor.py:50-91, merge.py:19-75) |
| TABLE VIEW | Core primitive | Capability-probed but not used; local 1.1 inspection says false |
| FREQ | Not the extraction primitive | Core record-cell primitive; masks/margins normalized (frequency.py:32-44, normalizer.py:15-105) |
| NUMBER IDs | Not used in the shown extraction path | Required generated identities for each record entity (hierarchy.py:29-55) |
| Binary patch | C++ wrapper dynamically calls engine API; package comments describe an engine crash constraint, but no required binary-patch step is present (R/extrae_censo.R:213-221) |
No binary patch; specifications reject production dependence on one (../argentina-censo2022-rxdb/docs/spec/09_EVIDENCE_BASELINE.md:146-160) |
| Checkpoints | Province/block files and skip-if-final-output-exists behavior (R/extrae_censo.R:786-852) |
Atomic success checkpoints bind source/schema/query/runtime identity and artifact hash; mismatches invalidate (checkpoint.py:13-124, manifest.py:16-28, orchestration.py:128-216) |
| Source provenance | User/configured RXDB paths and official-control tables; no content hash in extraction output found | Source-manifest hashing exists in adapter (manifest.py:36-85), but current radio manifests omit source hash |
| Validation | Cross-block controls, row counts, and province totals against bundled INDEC controls (R/extrae_censo.R:355-390,705-766) |
Unique keys, FK integrity, expected counts/reaggregation model, validation JSON (validation.py:36-133, dataset.py:159-218) |
| Output schema | Wide person-grain VP plus person/household/dwelling/collective exports; Parquet/CSV/SAV/SAS (R/extrae_censo.R:411-435,518-533) |
Separate typed entity Parquets with value/mask fields and canonical keys; adapter adds neutral frame IDs and frame tables (artifacts.py:50-94; adapter frame.py:210-224,315-404) |
OBSERVED: the implementations therefore differ materially in primitive, identity, hierarchy, merge contract, checkpointing, and canonical schema. Static similarity or difference is not bounded-radio output equivalence.
Known radio fixtures and exact evidence
All use batch width 5, RADIO identity scope, semantic profile hash 13cb1cf0…5d3608, RedEngine 1.1.0-final (compiled 2025-04-27), redatamx 1.1.3, selection-code fallback, and passing unique-key/FK checks.
| Radio | VIVIENDA | HOGAR | PERSONA | Output |
|---|---|---|---|---|
| 061120902 | 1 | 1 | 1 | CENSO_work/rxdb/vp-radio-061120902 |
| 061471101 | 73 | 56 | 137 | CENSO_work/rxdb/vp-radio-061471101 |
| 064279901 | 1,663 | 1,627 | 6,992 | CENSO_work/rxdb/vp-radio-064279901 |
OBSERVED: exact entity artifact hashes are embedded in each dataset manifest; m3-artifacts.sha256 independently records the accepted 061471101 set. UNKNOWN: source RXDB hash is absent from each radio manifest, so association with the April archive is contextual rather than cryptographically closed. 061471101 alone has an acceptance-target file and generated frame evidence.
Contradictions register
- OBSERVED: archive directory is literally
Base_ PO_A_IG, while Duran configuration expectsBase_PO_A_IG(R/Censo_config.R:196-200). Source discovery supports alternatives; consumers must not silently normalize without recording it. - OBSERVED:
vp-inspection.jsonsaystable_view: false; Duran relies on TABLE VIEW. This may reflect wrapper/runtime/API differences, not a universal engine fact. - OBSERVED:
source-april-2025.jsonrecords/home/matias/Documents/...; durable evidence now resides under/media/..., and extraction manifests still name the old path. - OBSERVED: profile file SHA-256
6ab5c047…3c22ecdiffers from semantic profile hash13cb1cf0…5d3608; these are different hash domains, not corruption. - OBSERVED: the inspected engine hierarchy is incomplete while the project profile supplies hierarchy. That is an explicit reconstruction assumption.
- OBSERVED: early
061120902outputs contain partial Parquets despite failed logs; only directories with passingvalidation.jsonare accepted.
Missing evidence
- A — ARG2022: actual artifact, hash, schema, creator/export method, geography/identity semantics, and custody record.
- B — Duran vs ours: same source hash, runtime characterization, bounded radio query, canonical column mapping, sorted key-based row comparison, masks/null semantics, and count/reaggregation report.
- C — April vs July: acquired July archive plus checksum/acquisition record, full member manifest, RXDB/RBFX hashes, schema inspections, and bounded semantic diff.
- D — three-way equivalence: A–C plus ARG2022 mapping and a common comparison contract for records, IDs, missingness, labels, and universes.
- E — interviews: dated, attributable notes/recordings with Pablo and Mauricio covering source acquisition, transformations, corrections, versions, and custody; claims must remain testimony until corroborated.
Pass-3 readiness matrix
| Workstream | Local evidence | Readiness | Blocking item |
|---|---|---|---|
| A ARG2022 schema/provenance | Negative search only | Not ready | Obtain artifact and custody evidence |
| B Duran-vs-ours bounded-radio equivalence | Code and three ours fixtures | Partly ready | Run Duran on same hashed source/radio; define mapping |
| C April-vs-July byte/schema diff | April fully fingerprinted | Not ready | July candidate absent in supplied roots |
| D Three-way equivalence | Ours only; Duran static | Not ready | A, B, and C |
| E Pablo/Mauricio interviews | No local evidence | Not ready | Conduct and preserve interviews |
No novelty claim is assessed.
Commands executed
Read-only commands (with bounded find roots) included:
git status --short; git branch --show-current
find <supplied-root> -maxdepth 3 -printf ...
find <five-supplied-roots> -type f/d <bounded name predicates>
zipinfo -l/-v bases_censo2022_RedatamX.zip
unzip -Z -1 bases_censo2022_RedatamX.zip
unzip -p bases_censo2022_RedatamX.zip <three RXDB members> | sha256sum
sha256sum <source archives, PERSONA.parquet, bounded CENSO_work artifacts>
python3 (pyarrow.parquet footer/schema inspection only)
rg -n <mechanism/radio/provenance terms> <three repositories>
jq <selected manifest/runtime/count fields> <radio manifests>
sed/cat/nl -ba <provenance, logs, and implementation files>
No unzip extraction command, write command targeting /media, source-code test, or national extraction command was executed.
Conclusions
- OBSERVED: the preserved bases ZIP and all 23 database members match the existing April-labelled custody manifest byte-for-byte.
- INFERRED: this strongly identifies the preserved archive as the source corpus represented by the April/May research evidence, but does not independently prove the historical download/use event.
- OBSERVED: no July replacement or ARG2022 data artifact exists in the supplied local roots.
- UNKNOWN: July-source differences and ARG2022 provenance/schema.
- OBSERVED:
PERSONA.parquetis only a five-row sample with no author/source binding. - OBSERVED: three local radio slices pass structural validation, but their manifests omit a source-content hash.
- OBSERVED: Duran and
rxdb-extractoruse materially different extraction and identity mechanisms; equivalence requires a controlled Pass-3 comparison. - UNKNOWN: three-way equivalence and interview-derived provenance.