Dashboard › institutional-transition-lab › Distillation
9acd2616-78cd-4015-b5ab-db24bdea248f["lore_tm_v1_nAGi-zHqaTUO_13p3C4gFZa9MYBrLGlNpGVFaqKE9b0","lore_tm_v1_fVydmh8G-LsudA5JgV-RfJ5unS5U4E0dcQ_imrQIPsM","lore_tm_v1_KB7yEvReHkuBgiXgFA0wk-AFDBGmsyX9GVuAAo8Ui0g","lore_tm_v1_a0ZnsDgPU0RE1PxiiQUiRh7YlgP-tGCI63Dxyj55ak8","lore_tm_v1_vQpLjfnG9vksuhmwgTkb0yBqGucWXUHgPGEa-S7yzHs","lore_tm_v1_tMuoAfF-rlb-wlIjDjvqrdWgCYiguvq0Pc6toD5GqDc","lore_tm_v1_VRkcbXsAb1U_IyErGgp0OI4AvwbNi7xhgq6ecELHWUw"]
ses_f7c75b165ffecW153mHnw4DLr2, titled “Retry semantic validation audit,” completed with an empty task_result.canonicalization_gate: "closed", record_count: 40, reviewer_count: 12, schema_errors: [], and semantic_errors: [].abstain, 25 accept, 3 reject, and 8 revise.94d88707ac3ed58a499f20610d6b6579fcf2810f16902dde13a1269e4328efd0.opentofu-github-pr-2830, opentofu-github-pr-2953, opentofu-github-pr-2959, and valkey-github-issue-4276./home/byk/Code/institutional-transition-lab/src/institution_lab/governance_adjudication.py defines exact resource limits: MAX_INPUT_BYTES = 16 * 1024 * 1024, MAX_ARTIFACT_BYTES = 32 * 1024 * 1024, MAX_ARCHIVE_MEMBERS = 128, MAX_ARCHIVE_MEMBER_BYTES = 16 * 1024 * 1024, and MAX_ARCHIVE_EXPANDED_BYTES = 64 * 1024 * 1024.governance_adjudication.py lines 30–55 define REQUIRED_INPUT_PINS and frozen identifiers including 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"._read_regular_file() in governance_adjudication.py lines 94–109 opens with os.O_RDONLY | os.O_NONBLOCK | getattr(os, "O_NOFOLLOW", 0), checks stat.S_ISREG() through os.fstat(), rejects declared or read size over the selected limit, and returns the bytes after the os.fdopen() context closes the descriptor._parse_json_object() in governance_adjudication.py lines 116–140 uses object_pairs_hook=_reject_duplicate_keys and parse_constant=_reject_non_finite_number; it rejects duplicate JSON keys, non-finite numbers, invalid UTF-8/JSON, and non-object roots._validate_manifest_identity() in governance_adjudication.py lines 143–154 requires the manifest key set to equal REQUIRED_INPUT_PINS, requires positive exact-int values for workflow_run_id and artifact_id, and compares every field in FROZEN_INPUT_PINS._verify_input_payloads() in governance_adjudication.py lines 157–217 verifies raw-byte SHA-256 values before parsing; ZIP checks include member-count uniqueness, total declared expanded size, required members documents.json and v1.2-adjudication-package.json, per-required-member size, bounded reads, and byte-for-byte equality with durable files; zipfile.BadZipFile maps to ValueError("artifact is not a valid ZIP archive")._verify_input_payloads() computes canonical documents_sha256 using canonical_sha256(documents_value) after JSON parsing, then returns VerifiedInputBundle containing pins, parsed documents, parsed coding_package, and parsed adjudication_schema.validate_against_schema() in governance_adjudication.py lines 770–776 uses Draft202012Validator(schema, format_checker=FormatChecker()) and emits sorted path-qualified messages in the form schema PATH: MESSAGE._validate_output_paths() in governance_adjudication.py lines 828–841 rejects any output aliasing an input and rejects the two outputs aliasing each other; _paths_alias() uses Path.samefile() or unresolved Path.resolve(strict=False) when a path does not exist._atomic_write() in governance_adjudication.py lines 844–856 creates a temporary file in the destination directory via tempfile.mkstemp(), writes and flushes text, calls os.fsync(), replaces the destination with os.replace(), and removes the temporary file on exceptions._write_failure_reports() in governance_adjudication.py lines 859–879 constructs a closed-gate JSON report with schema_version: 1, canonicalization_gate: "closed", and one validation_errors message, plus corresponding Markdown; it publishes the JSON and Markdown through two separate sequential _atomic_write() calls.main() in governance_adjudication.py lines 882–946 requires CLI flags --adjudication, --input-manifest, --documents, --coding-package, --artifact, --protocol, --coding-schema, --adjudication-schema, --summary-json, and --summary-markdown.main(), exceptions during input parsing/verification/schema or semantic setup invoke _write_failure_reports() and are re-raised; ordinary validation errors force summary["canonicalization_gate"] = "closed", write JSON and Markdown separately, then raise ValueError("adjudication validation failed:\n" + "\n".join(errors)).