Dashboard › institutional-transition-lab › Distillation
3e5d6948-62bd-4fe5-bbe4-4eadf271bee9["lore_tm_v1_gCVzvTWQyUrierqavteteKL19Dp3EYKAVZj-7O0pJzc","lore_tm_v1_BXDQksttmKXFye1vlQUApwxMeqIOfWLcmfsWJFLrl1s","lore_tm_v1_sp_F6ZAuQlEDSfEf2zeCetlBkcxmb8Aejb1iYNMNqA8","lore_tm_v1_veTi5aXzSKlG8Meghwdge4HOsBiugT_ETA2KToLsh4s","lore_tm_v1_1DieEIzugpJhw3t8NwyjjwujUVGJXFnzRXBeoUj5mj8","lore_tm_v1_H6jCQAK6OvQU8yeKMMr1ideUmVR_kd33YWrn_vF2UXw","lore_tm_v1_ZYWVO_ODnZMF49yvzeCfr3hzs3CQ3C3gKfUxHSNa7Sg"]
/home/byk/Code/institutional-transition-lab/schema/governance-adjudication-v1.schema.json is a 270-line Draft 2020-12 JSON Schema with additionalProperties: false; its top-level envelope requires schema_version, adjudication_id, design_status, transition_dates_excluded, outcome_data_used, inputs, reviewers, and records, and requires exactly 40 records via minItems: 40 and maxItems: 40.schema_version=1, design_status="performance_blinded_llm_assisted_source_adjudication", transition_dates_excluded=true, and outcome_data_used=false; adjudication_id is a string with minLength: 1.$defs.inputs requires exactly the 9 frozen input-pin fields; workflow_run_id and artifact_id are integers with minimum 1, while every SHA-256 field uses pattern ^[0-9a-f]{64}$.$defs.reviewer requires reviewer_id, reviewer_type, model, role, and assistance; reviewer_id and assistance use only minLength: 1, model is a string or null with minLength: 1, reviewer types are human, llm, and human_llm_assisted, and roles are source_adjudicator, evidence_auditor, and synthesizer.source_id and quote, while claim references additionally require field selected from record_class, event_kind, title, announced_on, effective_on, affected_scope, and body_patch_relation; string non-emptiness is enforced only through minLength: 1, so whitespace-only values remain schema-valid.$defs.power_change requires actor, right_kind, target, direction, change_status, scope, and a nonempty evidence_refs array. Directions are added, removed, or modified; statuses are effective, announced, proposed, rejected, or unclear; allowed right kinds are appoint, remove, elect, vote, delegate, override, approve, merge, write, release, veto, own, license, steward, fund, set_budget, set_strategy, set_policy, set_membership, set_terms, and inform.$defs.coding requires all 10 fields: record_class, event_kind, title, announced_on, effective_on, affected_scope, body_patch_relation, power_changes, confidence, and ambiguity. Record classes additionally include control_event, no_event, and abstain; dates use JSON Schema format: date; confidence is a number from 0 through 1; the schema itself does not encode class/date chronology or class/edge-status consistency.$defs.edge_revision requires basis, added, and removed; basis may be luna_a, luna_b, terra_advisory, or null, while added and removed must be arrays of power_change objects.$defs.source_audit requires inspected_before_codings=true, a unique nonempty source_ids array, and complete evidence_bounds; bounds require booleans source_text_truncated and patch_selection_truncated, nullable boolean files_listing_complete, and nonnegative integer patch_unavailable_count.record_id, source_url, decision, accepted_from, reviewer_ids, source_audit, rationale, evidence_limitations, unresolved_reason, claim_evidence_refs, final_coding, and graph_edge_revision. source_url must be a URI matching ^https://github\\.com/[^\\s]+$; reviewer_ids must be a unique nonempty string array; final_coding and graph_edge_revision may each be null./home/byk/Code/institutional-transition-lab/tests/test_governance_adjudication.py found 57 matches related to adjudication validation, including schema/ontology checks, URI/date formats, abstention gate behavior, exact frozen-record matching, accepted-response equality, source-audit fidelity, institutional dates and evidence grounding, edge revisions/statuses, Gemini restrictions, reviewer provenance, input pins/artifact integrity, fragment validation, and successful gate opening./home/byk/Code/institutional-transition-lab/tests/test_governance_adjudication.py totals 753 lines. test_adjudication_schema_matches_validator_ontology() compares schema enums with DECISIONS, REVIEWER_TYPES, REVIEWER_ROLES, RECORD_CLASSES, EVENT_KINDS | {None}, BODY_PATCH_RELATIONS, RIGHT_KINDS, DIRECTIONS, and CHANGE_STATUSES; test_schema_enforces_uri_and_date_formats() checks rejection of source_url="not a URI" and announced_on="2024-02-30" through validate_against_schema().record_id="example-1" and source_url="https://github.com/acme/example/issues/1", with source body containing The council may approve releases. and unbounded evidence. The default coding is record_class="no_event", null event/date/scope fields, body_patch_relation="not_applicable", no power changes, confidence=1.0, and null ambiguity.opencode-gpt-5.6-sol-primary, type llm, model openai/gpt-5.6-sol, role source_adjudicator, and assistance Primary source review and synthesis; its sole record accepts luna_a, has rationale The source contains no institutional transition., and uses an empty luna_a graph diff._validate() in /home/byk/Code/institutional-transition-lab/tests/test_governance_adjudication.py:212-222 recomputes the canonical documents hash, inserts it into the coding package, adjudication inputs, and test pins, then calls validate_adjudication() directly without validate_against_schema().abstain with an explicit unresolved reason leaves canonicalization_gate="closed"; 2. duplicate or missing record IDs fail exact frozen-document matching; 3. mutating accepted luna_a confidence to 0.5 fails accepted-response equality; 4. a resolved revise cannot retain final class abstain; 5. source_audit rejects inspected_before_codings=False, empty source_ids, or incomplete evidence bounds; 6. class/date rules reject missing required dates and forbidden effective_on; 7. bounded evidence requires evidence_limitations; 8. an accepted record cannot use graph_edge_revision.basis="luna_b" when accepted_from="luna_a"; 9. invented claim and edge quotes produce a not grounded error._institutional_adjudication() creates revised institutional records grounded with quote council, title Council gains release approval, date 2024-04-01, scope releases, relation body_only, and one edge where The council gains approve rights over releases in project releases; status maps to effective, announced, or proposed based on class, and graph_edge_revision uses basis=None with the final power change in added.effective_institutional_change+proposed, announced_institutional_change+effective, and proposal_only+effective), reject model google/gemini-3.7-flash with Gemini is restricted to event triage, require each record to reference a source_adjudicator, require unique reviewer_ids, ensure a dictionary reviewer ID fails closed rather than crashing, reverify every input pin, and pin adjudication_schema_sha256=6181f5cb60a0462f83be00be301763daa89f11581e68ee1c46a84e8bf4e5be31.FROZEN_INPUT_PINS and expect ValueError matching frozen issue #4 input: <field>; separately increment workflow_run_id and artifact_id; reject changed durable documents.json bytes through documents_file_sha256; reject ZIP member mismatch through artifact member mismatch: documents.json; and verify the committed manifest against artifact-9642983578.zip, documents.json, v1.2-coding-package.json, research/oss-governance-coding-protocol-v1.2.md, schema/governance-coding-v1.schema.json, and schema/governance-adjudication-v1.schema.json.cases/review/oss-governance-adjudication-v1/fragments/opentofu-a2.json: the committed partial fragment returns no errors from validate_adjudication_fragment() but intentionally fails the full-envelope schema; replacing its first record_id with {"invalid": "record ID"} must yield both a record_id error and a known subset error.test_resolved_valid_records_open_the_gate() expects no errors, decision_counts={"accept": 1}, class_counts={"no_event": 1}, no unresolved IDs, record decision provenance for example-1, an empty luna_a graph-edge revision, reviewer provenance equal to the envelope reviewers, and canonicalization_gate="open"./home/byk/Code/institutional-transition-lab/src/institution_lab/governance_coding.py:228-315 is stricter than parts of the adjudication validator: parse_response() requires an object and handles fenced JSON; validate_response() uses _nonempty() for textual fields and evidence quotes, rejects non-finite/boolean/out-of-range confidence, validates each power-change key and enum, grounds quotes against source text, requires power changes for institutional/proposal classes, forbids them for non-institutional classes, and requires ambiguity for abstain._validate_run() at /home/byk/Code/institutional-transition-lab/src/institution_lab/governance_coding.py:318-374 requires nonempty documents, valid unique raw response IDs exactly matching document IDs, and verifies coding_id, coding-schema hash, run_id, source_url, MODEL_INPUT_FIELDS, model, reasoning effort, and nonnegative integer elapsed_ms; parse or validation failures are retained as validation_errors with schema_valid=False._edge_signature() at /home/byk/Code/institutional-transition-lab/src/institution_lab/governance_coding.py:377-405 strips all six edge scalar fields and each evidence source_id/quote, sorts evidence references, serializes them canonically, and returns a sorted tuple of edge tuples; unlike graph_edge_diff()’s dictionary-key canonicalization, this tuple construction preserves duplicate identical edges.Re-read current validator, schema, and tests within the frozen audit scope is now completed (previously in_progress); 2. Verify each suspected defect with deterministic adversarial probes is now in_progress (previously pending); 3. Run scoped lint/tests and issue exact line-cited merge verdict remains pending. All three priorities remain high.