Orthemology ships a suite of Python validation scripts that check internal consistency across schemas, examples, verdict registries, and fixture files. These are deterministic consistency tools — they prove that the formal objects are well-formed and mutually consistent, not that any empirical claim is true.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/theislampill/orthemology/llms.txt
Use this file to discover all available pages before exploring further.
All validators use deterministic checks only. A green validator establishes record shape and internal agreement, never source truth.
Setup
Schema Validators
validate_schemas.py — Schema compilation and example validation
validate_schemas.py — Schema compilation and example validation
File: Expected output pattern:
scripts/validate_schemas.pyWhat it validates:- Every
schemas/*.schema.jsoncompiles as valid JSON Schema Draft 2020-12 - The complete schema inventory matches what is declared in
docs/current-state.yaml - Every example in
examples/*.jsonvalidates against its declaredschemafield - The
verdict-record.schema.jsonenum equals the registry’s semantic ID set (registry-driven check)
validate_negative_fixtures.py — Rejection of invalid fixtures
validate_negative_fixtures.py — Rejection of invalid fixtures
File: All 48 negative fixtures cover known invalid patterns, including:
scripts/validate_negative_fixtures.pyWhat it validates:
Every fixture in tests/invalid/ (I01–I48) is rejected by the schema it declares itself invalid against. This confirms the schemas actually enforce their constraints, not just accept everything.Run:- Empty task analysis (I01)
- Duplicate state metaortheme (I03)
- Unresolved residual without queue (I08)
- Verdict without objectivity index (I17)
- Claim path collapsed into episode path (I24)
- Token anchored to another occurrence (I28)
- Analysis self-inheritance or cycle (I29–I30)
- Robustness silently disabled (I48)
Semantic Validators
validate_verdict_semantics.py — Verdict records against the registry
validate_verdict_semantics.py — Verdict records against the registry
File:
scripts/validate_verdict_semantics.pyWhat it validates:- All verdict records in examples use only semantic IDs present in
docs/verdict-registry.yaml - Status values are from the declared
status_enum pathway_stateis consistent with the statuses onrequired_pathna_reasonsis present for everynot-applicablestatus
validate_cross_record_semantics.py — Cross-record consistency
validate_cross_record_semantics.py — Cross-record consistency
File:
scripts/validate_cross_record_semantics.pyWhat it validates:- A
closure_claimin a claim ledger is ill-formed while any residual hasdisposition: unresolved(Definition 13) TOKEN_TRUTH_LINKED: passentailsRESULT_CORRECT: passfor the same claim- Unresolved external references are incompatible with
record_mode: audit-ready
validate_claim_reasoning_paths.py — Claim-relative reasoning adequacy
validate_claim_reasoning_paths.py — Claim-relative reasoning adequacy
File:
scripts/validate_claim_reasoning_paths.pyWhat it validates:- Each
claim_reasoning_pathsentry’sreq_reasonis a subset of the episode’srequired_path reasoning_path_adequateis the correct conjunction overreq_reasonverdicts- No claim-level
reasoning_path_adequate: adequatewhen anyreq_reasonverdict isfail
Generator Scripts
generate_from_registry.py — Canonical source generation
generate_from_registry.py — Canonical source generation
File: This verifies that the committed generated files match what would be generated from the registry. Any drift (e.g., a hand-edited alias or enum) causes a failure.Run in write mode:
scripts/generate_from_registry.pyWhat it does:
Generates derived surfaces from docs/verdict-registry.yaml as the canonical source:- The verdict enum in
verdict-record.schema.json($defs.verdict_id.enum) - The prose alias table at
docs/generated/verdict-aliases.md
Other Validators
The following additional validators are included in the full suite run byvalidate_repo.py:
| Script | What it checks |
|---|---|
validate_notation.py | All documents follow the normative symbol table from notation-registry.yaml; no retired symbols appear in new work |
validate_type_token_semantics.py | Type/token distinction is correctly applied; episodes are tokens, orthemes are types |
validate_source_status.py | references/source-status.yaml statuses are consistent across claim families |
validate_current_state.py | docs/current-state.yaml is internally consistent; VERSION, README, STATUS agree with it |
validate_schemas.py | (see above) |
validate_latent_state_fixtures.py | Latent-state fixtures in tests/latent-state-fixtures.json validate correctly |
validate_reason_fixtures.py | Claim-reasoning fixtures in tests/claim-reasoning-fixtures.json validate correctly |