Valida os schemas JSON do corpus ICONOCRACY e reporta erros, avisos e quantidade de registros válidos. Use quando o usuário pedir para validar o corpus ou checar integridade dos dados.
Install
npx skillscat add anavvanzin/iconocracy-corpus/validate-corpus Install via the SkillsCat registry.
Validate Corpus
Valide o corpus a partir da raiz canônica do hub:
/Users/ana/Research/hub/iconocracy-corpus(canonical)~/iconocracy-corpusapenas como compatibilidade (symlink), nunca como path preferencial
Passos
- Ir para a raiz canônica do hub.
- Rodar:
conda run -n iconocracy python tools/scripts/validate_schemas.py
- Se o usuário fornecer arquivos específicos, validar apenas esses:
conda run -n iconocracy python tools/scripts/validate_schemas.py <arquivos>
- Reportar claramente:
- erros com caminhos/arquivos
- campos problemáticos, se disponíveis
- avisos relevantes
- contagem de registros válidos quando passar
- Se
data/processed/records.jsonlfalhar mascorpus/corpus-data.json+data/processed/corpus_dataset.csvexistirem, verificar setools/scripts/csv_to_records.py --dry-runconsegue regenerar o ledger e reportar isso como caminho de restauração antes de editar qualquer dado.
Regras
- Não inventar sucesso: sempre basear o resultado na saída do script
- Se o ambiente
iconocracynão estiver disponível, reportar isso explicitamente - Se
validate_schemas.pydisserjsonschema library requiredapesar dejsonschemaestar instalado, testar o import dentro do env:conda run -n iconocracy python -c "import jsonschema; from jsonschema import Draft202012Validator, FormatChecker, RefResolver; print('ok')"- Se aparecer
ModuleNotFoundError: No module named 'rpds.rpds', o problema é dependência quebrada derpds-py/referencingno env, não ausência real de schema; reportar como falha de ambiente antes de interpretar os dados. - Para auditoria read-only, pode rodar
python3 tools/scripts/validate_schemas.py ...fora do conda apenas como comparação, deixando explícito que o gate canônico continua quebrado. - Workaround conhecido: Use o python direto do ambiente:
conda run -n iconocracy python tools/scripts/validate_schemas.py ...ou/Users/ana/.venvs/iconocracy/bin/python3.12 tools/scripts/validate_schemas.py ...— vejareferences/iconocracy-env-workaround.md
- Se o problema for drift estrutural entre
records.jsonlecorpus-data.json, sugerirsync-corpusou restauração controlada do ledger antes de qualquer release - Validate against the canonical schema first. In 2026-06-24,
master-record.schema.json(governing the 280-record corpus) passed 280/280 whilecodebook-v2.1.0.schema.json(an orphan expansion schema) failed 0/280. Always identify which schema actually governs the current corpus before running validation, and report both results if multiple schemas exist.
v2.3.0 conditional rules (warnings mode)
As of 2026-06-25, tools/scripts/validate_schemas.py was upgraded (commit 49caba3 on main) with 3 conditional rules that emit warnings (not errors) for records that touch patch v2.3.0 fields. The validator exposes these via the in-memory function validate_records() which returns (valid, total, errors, warnings) — the CLI surface (main()) still reports only errors. To inspect warnings during a validation run, import validate_records directly:
from tools.scripts.validate_schemas import validate_records
import json
with open("data/processed/records.jsonl") as f:
records = [json.loads(line) for line in f if line.strip()]
valid, total, errors, warnings = validate_records(records, "master-record")
print(f"{valid}/{total} valid, {len(warnings)} warnings")
for w in warnings:
# w has keys: code, record_id, field, detail
print(f" [{w['code']}] {w['record_id']}: {w['field']} — {w['detail']}")Codes emitted (defined in tools/scripts/validate_schemas.py):
JUSTIFICATIVA_CURTA—genero_atribuido=masculinoorfamilia_alegorica=Masculino_Juridicowithjustificativa_genero< 80 charsREQUIRES_V23_FIELDS—familia_alegorica=Masculino_Juridicowithout any of the 5 v2.3.0 patch fields populatedHERCULES_INCOERENTE—substituicao_atributiva_herculeswithatributo_canonico_substituido == atributo_novo
Promotion to errors is deferred to v2.4.0+ once data stabilizes (per docs/decisions/2026-06-25-lacunas-v2.3.0.md).
Tests: tests/test_validate_schemas.py (5/5 passing as of 2026-06-25) covers baseline preservation, each warning code, and the coherent-HERCULES negative case.
Known gaps (v2.3.0 freeze plan)
The validator still does not cover (R-2026-06-25 in 2026-06-25-lacunas-v2.3.0.md):
interseccao de arraysforsubstituicao_atributiva_hercules(e.g.,Clavamust NOT appear inobjetos_regalia); not modeled yet.required-when-enum-matchfor all 5 v2.3.0 fields — current rule warns if NONE are populated; strict mode requires at least one specific field per subtipo.
Both are scheduled for v2.4.0+.