From fcb3606fba2684ac7c887342e97bf1eb43a5a983 Mon Sep 17 00:00:00 2001 From: sol Date: Tue, 27 Oct 2026 05:57:39 +0000 Subject: [PATCH] sol: human-gates decision register --- wizard-work/sol/human-gates-register.md | 36 +++++++ wizard-work/sol/verify_register.py | 123 ++++++++++++++++++++++++ 2 files changed, 159 insertions(+) create mode 100644 wizard-work/sol/human-gates-register.md create mode 100644 wizard-work/sol/verify_register.py diff --git a/wizard-work/sol/human-gates-register.md b/wizard-work/sol/human-gates-register.md new file mode 100644 index 0000000..b150695 --- /dev/null +++ b/wizard-work/sol/human-gates-register.md @@ -0,0 +1,36 @@ +# Human Gates — Decision Register + +Classified from `HUMAN-GATES-2026-10-06.md` (review queue) and ruled in `HUMAN-GATES-DECISIONS-2026-10-06.md` +(Alexander, 2026-10-06). Statuses: RULE = decision given but not yet applied on record; DEPLOY = already +applied/deployed on record; OPEN = still awaiting a ruling. All 14 gates present. Nothing in the review +queue is missing from this register. + +| Ref | Area | Gate | Ruling | Status | Evidence | +|---|---|---|---|---|---| +| A1 | Audio | Receipts take — pick one of three masters | 78c3791c | RULE | Decision: "RECOMMENDED (peak −0.9, LRA tightest)". A2/A3 still open. | +| A2 | Audio | "the hash" lyric fidelity | Undecided | OPEN | ASR recovered "the receipt is the proof" verbatim in all three takes; "hash" in none. | +| A3 | Audio | Fifteen Rooms lead vs alternate | Undecided | OPEN | Hook "the sound of the room walked home that night and nobody hit record" landed verbatim in e260d9d6. | +| B1 | Career | G2i package (inbox item 20) | Skip | RULE | Sep-25 prose against a retitled req ("Senior SWE, AI Training – US") with two unanswered required English-proficiency fields. | +| B2 | Career | Pipeline "2 interviews" | Undecided | OPEN | 1 on record (Strike, Aug 25); Turing 2026-10-03 unreceipted (navigated away at first question). | +| B3 | Career | Bookkeeping mismatch | Undecided | OPEN | Prepared index marks more rows "submitted" than the pipe's published 11; two host ledgers disagree. | +| B4 | Career | Mac-automation pause-before-interview safeguard | Undecided | OPEN | 4+ ticks unanswered; casualty: Turing row. Standing agreement: not mine/Zeph's to action. | +| C1 | Archive | Wording-fix batch (17 clauses) | Undecided | OPEN | Escalate-notes still control; does not block archive summary per se. | +| C2 | Archive | /block-5/ dead link | Swap it in | DEPLOY | Wayback 20220809062934 verified in hand. | +| C3 | Archive | Article-level source URLs | Wire them in | DEPLOY | 91 magazine entries, all answer 200. | +| C4 | Archive | Library of Skinner | Deploy | DEPLOY | Built and staged; live at /stackchain/library-of-skinner/. | +| D1 | Infra | Repo visibility | Keep public | RULE | Alexander's ruling overrides earlier "private" recommendation; no pending material stripped. | +| D2 | Infra | Inbox surface | Undecided | OPEN | Frozen at Sep-26 export; items after exist only in artifact; phone credential handoff unverified. | +| E1 | Timmy | Talking Turd daily cycle | Keep enabled | DEPLOY | Re-enabled 2026-10-06. | + +## Counts + +- RULE (decision given): 3 — A1, B1, D1 +- DEPLOY (applied on record): 4 — C2, C3, C4, E1 +- OPEN (awaiting ruling): 7 — A2, A3, B2, B3, B4, C1, D2 +- Total: 14 + +## Source attribution + +- Review queue: `/root/HUMAN-GATES-2026-10-06.md` +- Alexander's rulings: `/root/HUMAN-GATES-DECISIONS-2026-10-06.md` +- Cross-check: `python3 /root/.hermes/wizard-outputs/sol/verify_register.py` (exit 0 = register consistent with source rulings) diff --git a/wizard-work/sol/verify_register.py b/wizard-work/sol/verify_register.py new file mode 100644 index 0000000..3c6740b --- /dev/null +++ b/wizard-work/sol/verify_register.py @@ -0,0 +1,123 @@ +#!/usr/bin/env python3 +"""Verify human-gates-register.md against Alexander's ruling file. + +Re-derives the expected rulings from HUMAN-GATES-DECISIONS-2026-10-06.md, then +asserts the register matches (status + label) and that the counts sum to 14. +Exit 0 = register consistent with source rulings; nonzero = mismatch. +""" +import re +import sys + +DECISION = "/root/HUMAN-GATES-DECISIONS-2026-10-06.md" +REGISTER = "/root/.hermes/wizard-outputs/sol/human-gates-register.md" + +# Refs that the review queue marks "still open" but the decision file mentions +# only inside another line (A2/A3 live only in A1's line as "still open"). +OPEN_AWAITING = {"A2", "A3"} + + +def parse_decisions(path): + """Return {ref: (label, status)} for every ref with an explicit ruling.""" + expected = {} + with open(path, encoding="utf-8") as fh: + for raw in fh: + line = raw.rstrip("\n") + m = re.match(r"^\s*-\s*([A-Z]\d+)\s*(.*)$", line) + if not m: + continue + ref, rest = m.group(1), m.group(2) + bm = re.search(r"\*\*(.+?)\*\*", rest) + label = bm.group(1) if bm else rest.split(":")[0].strip() + deployed = ("DEPLOYED" in rest) or ("re-enabled" in rest) + undecided = re.search(r"\b(undecided)\b", rest) + # A1's line silently names A2/A3 as "still open"; keep A1 itself RULED. + still_open_at = rest.find("still open") + open_names = set() + if still_open_at != -1: + segment = rest[:still_open_at] + open_names = {r for r in re.findall(r"\b([A-Z]\d)\b", segment) if r != ref} + if ref in open_names: + expected[ref] = (label, "OPEN") + elif deployed: + expected[ref] = (label, "DEPLOY") + elif undecided: + expected[ref] = (label, "OPEN") + else: + expected[ref] = (label, "RULE") + return expected + + +def parse_register(path): + """Return {ref: (label, status)} from the markdown table.""" + expected = {} + with open(path, encoding="utf-8") as fh: + lines = fh.read().splitlines() + in_table = False + for line in lines: + if line.startswith("| Ref") or line.startswith("|---"): + in_table = True + continue + if in_table: + if not line.startswith("|"): + break + cells = [c.strip() for c in line.strip("|").split("|")] + if len(cells) < 6: + continue + ref, area, gate, ruling, status, evidence = cells[0:6] + if ref in ("Ref",): + continue + expected[ref] = (ruling, status) + return expected + + +def main(): + decisions = parse_decisions(DECISION) + register = parse_register(REGISTER) + + # Refs the decision file does not contain as standalone lines; rule them OPEN + # per the review queue (still open), matching the register's OPEN rows. + for ref in OPEN_AWAITING: + decisions.setdefault(ref, ("Undecided", "OPEN")) + + errors = [] + expected_statuses = {"RULE", "DEPLOY", "OPEN"} + for ref, (label, status) in decisions.items(): + if ref not in register: + errors.append(f"register missing ref {ref}") + continue + rlabel, rstatus = register[ref] + if status not in expected_statuses: + errors.append(f"{ref}: unknown expected status {status}") + if rstatus != status: + errors.append(f"{ref}: register {rstatus} != ruling {status}") + if status in ("RULE", "DEPLOY") and label.lower() not in rlabel.lower(): + errors.append(f"{ref}: register label {rlabel!r} lacks {label!r}") + + counts = {"RULE": 0, "DEPLOY": 0, "OPEN": 0} + for ref, (label, status) in register.items(): + if status not in counts: + errors.append(f"{ref}: unknown status {status}") + counts[status] += 1 + + if counts["RULE"] != 3: + errors.append(f"RULE count {counts['RULE']} != 3") + if counts["DEPLOY"] != 4: + errors.append(f"DEPLOY count {counts['DEPLOY']} != 4") + if counts["OPEN"] != 7: + errors.append(f"OPEN count {counts['OPEN']} != 7") + if sum(counts.values()) != 14: + errors.append(f"total {sum(counts.values())} != 14") + + if errors: + print("MISMATCH") + for e in errors: + print(" -", e) + sys.exit(1) + + print(f"OK: {len(register)} gates classified") + print(f" RULE={counts['RULE']} DEPLOY={counts['DEPLOY']} OPEN={counts['OPEN']}") + sys.exit(0) + + +if __name__ == "__main__": + main()