Dashboard › institutional-transition-lab › Distillation
f7e37f66-8df3-4098-ae79-2035b1d83229["lore_tm_v1_C-fHMxTfAzU-TiFuAGAofxowFiQz4bRSpzRbcu05lyY","lore_tm_v1_OPOck0IdyNF6TCrsSqWGJZMbfGSAWdhm0f6Z9C54YRA","lore_tm_v1_6GPwSsVHq5Xqg0p7dwaXGSPBY2_E5pMdjnroWRDd6Kg","lore_tm_v1_27dPxB0hcPn5tLPIx9wrnTJ8RFSl460HqNsn8BOxa4Q","lore_tm_v1_8bOpKCCF3kMt8ZDJGCIIJ7EbNipzb8GihPHDwrCyvo8","lore_tm_v1_ugdG8OqPyoKWJscm5a8FKaU_O1GUaxRpDdpnAvqDuc8","lore_tm_v1_0-jHYegO2zM7uOMRw4W_t2aggRpi19CYqmDKD3hS0R0","lore_tm_v1_cgdPPSYIJbtqdYwWl85FjsCxrLSNZh484QcOImHe2JA"]
Date: September 9, 2026
canonical_sha256() at src/institution_lab/governance_adjudication.py:80-87 serializes with json.dumps(..., sort_keys=True, separators=(",", ":"), allow_nan=False) and returns the SHA-256 digest; this rejects already-materialized non-finite floats during canonicalization._parse_json_object() at src/institution_lab/governance_adjudication.py:129-140 uses json.loads() with object_pairs_hook=_reject_duplicate_keys and parse_constant=_reject_non_finite_number, catches UnicodeDecodeError and json.JSONDecodeError, and requires the top-level value to be a dict; it does not supply parse_float, explaining why finite-looking exponent-overflow tokens such as 1e9999 become non-finite Python floats without immediate rejection.src/institution_lab/governance_adjudication.py:41-55 is: workflow_run_id=33063470968, artifact_id=9642983578, artifact_sha256=1f6be91fcd98e43e99d82d5f274536f6c23616e7e6c711e26324a2cc4b06ef06, documents_sha256=d70f7f795847968339a645b6dbd6d4428af6bd6044de44fa2602d4c4343b0ee9, documents_file_sha256=2a62ab05687982c112a29f6126227c26c3ff8defc89ca64662753aaf85c3c0ce, coding_package_file_sha256=14644759f53071adfe1173d4e25bb01931b8c1591fa8a48295dbd0556a754769, protocol_sha256=06d4b3407677fe7fb23046f70164a366db06638e8a29af3daf7661f00d565933, coding_schema_sha256=bfc735a7d8602d1f236a88c2d23b195f0600a8bae86fb8c8936afe7883a41b8e, and adjudication_schema_sha256=6181f5cb60a0462f83be00be301763daa89f11581e68ee1c46a84e8bf4e5be31._validate_manifest_identity() at src/institution_lab/governance_adjudication.py:143-154 requires the manifest’s key set to equal REQUIRED_INPUT_PINS, requires positive exact-int values for workflow_run_id and artifact_id, and compares every FROZEN_INPUT_PINS field for exact equality, reporting the first mismatched field encountered in insertion order._verify_input_payloads() at src/institution_lab/governance_adjudication.py:157-217 validates frozen manifest identity before hashing or parsing its supplied byte arguments; it hashes the exact byte snapshots for artifact, documents, coding package, protocol, coding schema, and adjudication schema, then parses the same documents, coding-package, and adjudication-schema snapshots. It checks manifest["documents_sha256"] against canonical_sha256(documents_value) at lines 209-211.verify_input_manifest() at src/institution_lab/governance_adjudication.py:220-239 calls _validate_manifest_identity(manifest) before invoking any _read_regular_file(...), providing pin-first rejection in this API path.src/institution_lab/governance_adjudication.py:907-924 parses adjudication first and input_manifest second, then eagerly evaluates reads for artifact, documents, coding_package, protocol, coding_schema, and adjudication_schema as arguments to _verify_input_payloads(); therefore _verify_input_payloads() cannot perform its line-167 frozen-pin check until all payload reads have already completed.validate_adjudication() at src/institution_lab/governance_adjudication.py:512-534 is typed with verified_pins: dict[str, str] despite frozen pins containing integers; it converts non-object adjudication inputs to {}, emits inputs must be an object, compares every sorted REQUIRED_INPUT_PINS key to verified_pins, recomputes the canonical documents hash, and checks it against the coding package summary’s documents_sha256._write_pinned_cli_inputs() at tests/test_governance_adjudication.py:40-84 creates adjudication, manifest, documents, coding-package, artifact, protocol, coding-schema, adjudication-schema, summary JSON, and summary Markdown paths; constructs an artifact containing documents.json and v1.2-adjudication-package.json; computes all manifest hashes; and monkeypatches FROZEN_INPUT_PINS to that generated manifest._run_cli() at tests/test_governance_adjudication.py:87-103 constructs all 10 CLI path arguments in order—adjudication, input_manifest, documents, coding_package, artifact, protocol, coding_schema, adjudication_schema, summary_json, summary_markdown—patches sys.argv, and directly calls governance_adjudication.main().tests/test_governance_adjudication.py contained exactly 1,024 lines at inspection time; its imports include canonical_sha256, file_sha256, validate_adjudication, validate_adjudication_fragment, validate_against_schema, and verify_input_manifest.