feat(builder): repair existing templates, a weekly check that queues repairs, and eval
Validate game templates / validate (push) Successful in 20s
Validate game templates / boot-test (push) Successful in 1m11s
Validate game templates / publish (push) Skipped

The builder could only create games; nothing noticed when a live template
stopped working, and there was no way to tell whether a builder change made
it better or worse.

- repair -id ID: boots an existing template as nodes run it; if it fails,
  the same investigation as for a draft runs and the model changes only what
  the diagnosis says. The worker handles "repair" jobs (gameId from the
  panel) and opens "fix(games): repair ..." on draft/<id>; a template that
  boots as it is reports "nothing to repair" and opens no PR. The boot and
  fix loop is now shared by builds and repairs.
- validate.yml runs weekly and boot-tests every game; failed games are sent
  to the panel (X-GBR-Event: games_boot_failed) to queue repairs.
- eval -ids all: builds games that already have a template from scratch,
  blind, and scores each draft against it (boots, same image and app, ports,
  ready line, settings found) into eval.md and eval.json.
- research skips our own sites, so neither research nor eval reads our
  templates back.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
gregandClaude Opus 5.5 committed 2026-10-26 00:27:58 -04:00
1 parent 00cc61aba2
commit 17f6477b71
12 files changed
+535 -20

No files matched your search

+2
View File
@@ -54,4 +54,6 @@ done
echo "passed: ${passed[*]:-none}"
echo "skipped: ${skipped[*]:-none} (missing secrets)"
echo "failed: ${failed[*]:-none}"
# For the workflow: the weekly run queues a repair for each failed game
[ -n "${GITHUB_OUTPUT:-}" ] && echo "failed=${failed[*]}" >> "$GITHUB_OUTPUT"
[ ${#failed[@]} -eq 0 ]