Dashboard › institutional-transition-lab › Distillation
394fc4a9-587b-47fc-aff7-94a5e771ffa3["lore_tm_v1_8Ogpe9YU6tjEPhj376Z5oCPQVc2q_mtsSInN82xmGTI","lore_tm_v1_a8ejwmhRc--f6zfBsYZ_6dPBCw8pFSI43elTQAYhTHc"]
Date: Sep 8, 2026
/home/byk/Code/institutional-transition-lab/src/institution_lab/governance_adjudication.py lines 281β320 validate adjudication decisions: accept requires accepted_from in RESPONSE_SOURCES and final_coding exactly equal to that frozen response; only accept may set accepted_from; accept/revise/reject require a dictionary final_coding that passes validate_response(); abstain requires null final_coding and a non-empty unresolved_reason; resolved decisions require null unresolved_reason, cannot use final class abstain, and reject must resolve to a non-institutional class.governance_adjudication.py lines 321β348 require effective_institutional_change to set effective_on, require announced_institutional_change to set announced_on, prohibit effective_on for announced_institutional_change and proposal_only, and allow power-edge statuses by class as follows: effective change β effective; announced change β announced; proposal only β proposed, rejected, or unclear.governance_adjudication.py lines 350β366 require claim_evidence_refs to be an array and validate each reference against the frozen source index; for institutional classes, every non-null field in CLAIM_FIELDS must appear as a grounded field in those references.governance_adjudication.py lines 368β385 require null graph_edge_revision for abstain and a dictionary revision for resolved decisions; revision basis must be a response source or null, an accepted revisionβs basis must equal accepted_from, and added/removed must exactly equal the result of graph_edge_diff(baseline, final_coding).validate_adjudication() in governance_adjudication.py requires transition_dates_excluded: true, outcome_data_used: false, and input pins matching verified pins; it computes the canonical documents hash and checks it against coding_package.summary.documents_sha256.validate_adjudication() requires a non-empty reviewer array with unique reviewer IDs and requires each adjudication record to list at least one reviewer whose role is source_adjudicator.validate_adjudication() requires adjudication record IDs to match the frozen document IDs exactly once and in order, and separately requires coding-package IDs to match the same document IDs exactly once and in order.governance_adjudication.py defines DECISIONS = {"accept", "revise", "reject", "abstain"}, institutional classes effective_institutional_change, announced_institutional_change, and proposal_only, reviewer types human, llm, and human_llm_assisted, reviewer roles source_adjudicator, evidence_auditor, and synthesizer, and response sources luna_a, luna_b, and terra_advisory.governance_adjudication.py defines required input pins: workflow_run_id, artifact_id, artifact_sha256, documents_sha256, documents_file_sha256, coding_package_file_sha256, protocol_sha256, coding_schema_sha256, and adjudication_schema_sha256.governance_adjudication.py freezes these input values: 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; and coding_schema_sha256=bfc735a7d8602d1f236a88c2d23b195f0600a8bae86fb8c8936afe7883a41b8e.FROZEN_INPUT_PINS in governance_adjudication.py does not show a frozen adjudication_schema_sha256 value in lines 35β46, although adjudication_schema_sha256 is included in REQUIRED_INPUT_PINS.CLAIM_FIELDS in governance_adjudication.py contains exactly record_class, event_kind, title, announced_on, effective_on, affected_scope, and body_patch_relation.canonical_sha256() serializes JSON with sort_keys=True and separators=(",", ":") before SHA-256 hashing; file_sha256() reads files in 1024 * 1024 byte blocks.verify_input_manifest() requires the manifest key set to equal REQUIRED_INPUT_PINS, requires positive integer workflow_run_id and artifact_id, checks every listed frozen pin, computes file hashes for the artifact, documents, coding package, protocol, coding schema, and adjudication schema, and validates the canonical documents hash.verify_input_manifest() checks ZIP members documents.json and v1.2-adjudication-package.json byte-for-byte against the durable documents and coding-package paths, respectively._source_index() indexes each frozen source by exact source_id and text, then adds record_metadata as canonical compact JSON containing record_id, source_url, published_on, publisher, and source_type._evidence_errors() requires ordinary evidence references to contain exactly source_id and quote, and claim references to contain exactly source_id, quote, and field; the field must be in CLAIM_FIELDS, the source ID must exist in the frozen document, and the non-empty quote must be an exact substring of that source._response_for() returns a response only when the named result is a dictionary with schema_valid: true and a dictionary-valued response.graph_edge_diff() canonicalizes complete edge dictionaries with sorted compact JSON and derives added and removed by exact set difference between baseline and final power_changes, returning edges in sorted canonical-key order._validate_reviewer() requires exactly reviewer_id, reviewer_type, model, role, and assistance; human reviewers must have null model, non-human reviewers must name a non-empty model, and any model string containing gemini case-insensitively is rejected because Gemini is restricted to event triage._validate_record() requires source_url to match the frozen document, a valid decision, a non-empty unique reviewer_ids array containing only known reviewer IDs, and a non-empty rationale._validate_record() requires source_audit.inspected_before_codings: true, requires source_audit.source_ids to exactly equal the frozen documentβs source IDs in order, and requires source_audit.evidence_bounds to exactly equal the frozen documentβs evidence_bounds._validate_record() treats evidence as bounded when source_text_truncated is true, files_listing_complete is false, patch_selection_truncated is true, or integer patch_unavailable_count exceeds 0; bounded evidence requires a non-empty evidence_limitations string.