Skip to content

mario: the package carries its configuration, objective, ledger and evidence; plugins/calibrate is the outer loop - #31

Merged
richard-epsilla merged 6 commits into
mainfrom
kit-mario-config
Sep 21, 2026
Merged

richard-epsilla merged 6 commits into
mainfrom
kit-mario-config

Conversation

@richard-epsilla

Copy link
Copy Markdown
Contributor

The first instance of the dual loop (System One Harness docs/dual-loop.md): the inner harness's package declares everything the outer loop needs, and the outer loop ships as a plugin.

kits/mario (plugin 0.4.0, game logic unchanged from the release)

  • config.yaml v1: the instructions, gate, encoder, the tunables the rendering reads (horizons, the tall-wall height, the measured take-off windows) and the objective (pass on cleared, a failure per life lost, level_x as the locus, observations/ as the evidence).
  • The environment reads its tunables from that file (SYSTEMONE_CONFIG or the package root) and archives every frame it shows under observations/ with a timestamp index, beside the live frame.jpg.
  • tools/evidence.py cuts the archive into a contact sheet around each failure. ledger.jsonl records version 1 and what the manual loop found.

plugins/calibrate (0.1.0): the outer loop as a Skill with the method and its MUSTs, and scripts for the platform work: bench.py (K runs one at a time, workspaces fetched, the objective's scoreboard and failure groups), probe.py (a scripted run), publish.py (the package uploaded as the inner harness's plugin, instructions following config.yaml), report.py. It expects HR_API_URL, HR_CALIBRATION_TOKEN (a per-turn credential scoped to the inner harness) and HR_INNER_HARNESS.

Requires System One Harness 0.4.0 on the base and the driver reading config.yaml, writing trace.json and passing handoff (HarnessRouter side).

🤖 Generated with Claude Code

richard-epsilla and others added 6 commits September 21, 2026 02:30
…vidence renderer, and archives what it showed

config.yaml (version 1) holds the instructions, gate, encoder, the tunables the
rendering reads (horizons, the tall-wall height, the measured take-off windows)
and the objective (pass on cleared, a failure per life lost, level_x as the
locus, observations/ as the evidence). The environment reads its tunables from
that file and archives every frame it shows under observations/ with a
timestamp index. tools/evidence.py cuts the archive into a contact sheet around
each failure. ledger.jsonl records version 1 and what the manual loop found.
This is the first instance of docs/dual-loop.md in the harness repo. Plugin
0.4.0; the game logic is the released one.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…idence

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…akes the package's goal

wait_run returned on any status but in_progress, and the server says running for
work in progress, so the bench started its three runs at once on one machine
(recorded on hr-test 2026-09-21 04:41). It now waits for completed, failed,
incomplete or cancelled. session_of falls back to the inner harness's newest
session. The Mario package carries its default goal for the bench.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…me-named package only

The Calibrator took the harness's plugin export (a generated package named after
the harness, with no version) as the package and published it back, which added a
second package beside the environment's. fetch.py takes the package that carries
the environment through the plugins files endpoint; publish.py refuses a manifest
without a version and a name the harness does not carry unless told --new.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…s retried, and a run without a record counts as a failed run

A response read failed while its turn was still running, and the archive, built
from the checkpoint that lands when the turn ends, answered 404 right after; the
bench exited and the Calibrator left the method to improvise. wait_run now
believes a terminal status only once the session is no longer running, and a
non-completed one only after four consecutive reads; fetch_workspace retries the
archive on 404 for two minutes; every non-completed status read is logged to
wait-log.jsonl for the platform to chase; a run without a record is a failed run
in the scoreboard, not a crash.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@richard-epsilla
richard-epsilla merged commit 6d6796b into main Sep 21, 2026
6 checks passed
@richard-epsilla
richard-epsilla deleted the kit-mario-config branch September 21, 2026 11:01
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant