harness v4 converts a PostgreSQL major; the engine-major gate passes one proven, marked app (09 decision 35)
gates / gates (push) Successful in 2s

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0159rPz1ZhFKsS53msqPYxtS
This commit is contained in:
2026-09-25 13:04:01 +02:00
parent f238a24cd9
commit 6a4a5f0cf7
7 changed files with 364 additions and 9 deletions
+9
View File
@@ -27,6 +27,9 @@ AN ENTRY (all keys required unless marked):
memory_peak_pct the memory watch's worst container peak in % of its limit; null only on a
backfilled entry (harness v1 had no watch)
marks {"files_may_change": bool, "needs_person": null | "<why>", "memory_tight": bool}
engine_conversion (optional) {"service", "engine": "postgres", "from": int, "to": int} — the box
CONVERTS this PostgreSQL major (controller v0.273.0, `09` §6.4 part 10); written by
`upgrade-test.py --write-ladder` only when the bench AND the box both converted it
backfilled (optional) "YYYY-MM-DD" — written by the backfill from an EXISTING record,
never by a new test; a new move may not carry it
@@ -135,6 +138,12 @@ def check_entry(e):
for svc in e["digest"]:
if svc not in e["to"]:
p.append("digest names a service %r that `to` does not" % svc)
conv = e.get("engine_conversion")
if conv is not None: # `09` §6.4 part 10 — the box converts ONLY on this mark
if not (isinstance(conv, dict) and set(conv) == {"service", "engine", "from", "to"}
and conv["engine"] == "postgres" and isinstance(conv["from"], int) and isinstance(conv["to"], int)
and conv["from"] < conv["to"] and conv["service"] in e["to"]):
p.append("engine_conversion must be {service (in `to`), engine: postgres, from < to (ints)}")
marks = e["marks"]
if not isinstance(marks, dict) or set(marks) != {"files_may_change", "needs_person", "memory_tight"}:
p.append("marks must be exactly {files_may_change, needs_person, memory_tight}")