Town: client cells from their latest run; the backlog after a fresh village

decePub's e2e runs append to out/client.jsonl. The report kept the newest row per test and account, and the backlog
every row, so a failure from a run that picked other accounts stayed in both after later runs passed. Each client
cell now counts as its latest run left it (check.latest_client: the rows within an hour of its newest).

The backlog comes from a fresh village on today's build: 2556 checks pass and 4 fail, three of them peer-to-peer
counts, and one GoToSocial losing a status from its cache (an Update handled as a Create; a restart heals it),
recorded in INTEROP.md rather than as a gap, which would hide our own edits failing there. The community vote and the
Lemmy thread that failed before were data from older builds.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LsXgEaXee4GCU1hwYgPJXw
This commit is contained in:
thepraandClaude Opus 5.5 committed 2026-10-05 11:45:57 +02:00
1 parent 5860b71223
commit fb90558dec
5 files changed
+27 -27

No files matched your search

+1 -1
View File
@@ -27,7 +27,7 @@ def main(args):
with open(os.path.join(run_dir, "results.json")) as f:
result = json.load(f)
gaps = {g["id"]: g for g in check.load_gaps()}
client = check.classify([dict(c) for c in load_jsonl(os.path.join(seed.OUT, "client.jsonl"))], list(gaps.values()))
client = check.classify(check.latest_client([dict(c) for c in load_jsonl(os.path.join(seed.OUT, "client.jsonl"))]), list(gaps.values()))
scenarios = load_jsonl(os.path.join(seed.OUT, "scenarios.jsonl"))
checks = result["checks"] + client
+15
View File
@@ -438,6 +438,21 @@ def canary_hits(platform, canaries):
return sorted(c for c in canaries if c in dump)
def latest_client(lines):
"""decePub's e2e cells (out/client.jsonl, appended by every run) as each cell's latest run left them: the rows from
within an hour of the cell's newest, the newest per test. A run that picked other accounts leaves no stale failure."""
from datetime import datetime, timedelta
at = lambda c: datetime.fromisoformat(c["t"].replace("Z", "+00:00"))
newest = {}
for c in lines:
newest[c["cell"]] = max(newest.get(c["cell"], at(c)), at(c))
latest = {}
for c in sorted(lines, key=at):
if at(c) >= newest[c["cell"]] - timedelta(hours=1):
latest[(c["cell"], c.get("ref"))] = c
return list(latest.values())
def load_gaps():
try:
with open(os.path.join(HERE, "gaps.json")) as f:
+1 -4
View File
@@ -175,10 +175,7 @@ def main(args):
import check
with open(client) as f:
lines = [json.loads(line) for line in f if line.strip()]
latest = {}
for c in lines:
latest[(c["cell"], c.get("ref"))] = c # the latest result of each test
checks = check.classify(list(latest.values()), check.load_gaps())
checks = check.classify(check.latest_client(lines), check.load_gaps())
for cell, v in check.summarise(checks).items():
result["cells"][cell] = v
from collections import Counter