Files
troupe-standup/wizard-work/ledger/diag2.py
T
2026-10-30 10:46:26 +00:00

51 lines
2.0 KiB
Python

#!/usr/bin/env python3
"""Precise (id,line) -> end_line/bytes delta between my parse and the pin."""
import importlib.util
import json
import re
import sys
BEGIN = "<!-- queue-index:begin -->"
END = "<!-- queue-index:end -->"
doc = open("/root/troupe-standup/docs/queue-index.md", encoding="utf-8").read()
body = doc.split(BEGIN, 1)[1].split(END, 1)[0]
m = re.search(r"```json\n(.*?)\n```", body, re.S)
pinned = json.loads(m.group(1))
SPEC = importlib.util.spec_from_file_location(
"qe", "/root/troupe-standup/wizard-work/ledger/queue-extract.py")
qm = importlib.util.module_from_spec(SPEC)
SPEC.loader.exec_module(qm)
mine, _, _ = qm.extract()
pin_by_key = {(it["id"], it["line"]): it for it in pinned["items"]}
mine_by_key = {(it["id"], it["line"]): it for it in mine}
delta = []
for k in sorted(set(pin_by_key) & set(mine_by_key), key=lambda t: (t[1], t[0])):
pa, ma = pin_by_key[k], mine_by_key[k]
if pa["end_line"] != ma["end_line"] or pa["lines"] != ma["lines"] or pa["bytes"] != ma["bytes"]:
delta.append((k, pa, ma))
print("total shared keys:", len(pin_by_key))
print("keys with end_line/lines/bytes divergence:", len(delta))
for k, pa, ma in delta:
print(" %s mine(end=%-5d lines=%-4d by=%-6d) pin(end=%-5d lines=%-4d by=%-6d)" %
(k, ma["end_line"], ma["lines"], ma["bytes"], pa["end_line"], pa["lines"], pa["bytes"]))
content = open("/root/troupe-standup/WORK-QUEUE.md", encoding="utf-8").read()
lines, trailing = qm.split_lines(content)
fenced = qm.fence_mask(lines)
items, end_of = qm.build_items(lines, fenced)
sizes2 = [qm.line_bytes(ln, i == len(lines) - 1, trailing) for i, ln in enumerate(lines)]
spans = sorted([(it["line"], end_of(it["line"])) for it in items])
overlap = 0
prev_end = 0
for (a, b) in spans:
if a < prev_end + 1:
overlap += 1
prev_end = max(prev_end, b)
print("items:", len(items), "first:", items[0]["line"], "last:", items[-1]["end_line"])
print("overlap count:", overlap)
print("end of last:", items[-1]["end_line"], "file lines:", len(lines))
print("my item byte sum:", sum(it["bytes"] for it in items))