Skip to content

feat: run a brokered Grok training slot in one container - #33

Merged
apresmoi merged 87 commits into
mainfrom
feat/paideia-training-grok
Sep 18, 2026
Merged

apresmoi merged 87 commits into
mainfrom
feat/paideia-training-grok

Conversation

@apresmoi

Copy link
Copy Markdown
Collaborator

Adds the training-container v3 path: a brokered Grok slot, its root supervisor, and the bindings that stop a run using the wrong code or reading its own test set.

Depends on noopolis/daimon#29. This branch vendors Daimon's contract manifest sha256:c672ed47…, which exists only on that branch. Merging this first would leave main unable to compile or attest any Daimon organization.

What this adds

  • a training broker declaration carrying declared limits and one evaluator root per role
  • a root slot supervisor with recycle, canaries and a grok-slot-preflight.v2 receipt, now run at container start rather than only on recycle
  • a host-side and in-image binding between the declared native parent and the attested Daimon runtime identity — before this, a training run performed no identity verification at all
  • the sealed datasets closed against the subject (see below)

The sealed test set was reachable

Proven, not theorised: as uid 2200, three of four routes read the held-out answer key, including a namespace rebind of the dataset's own mount that no bubblewrap deny mask can answer. /run/training/inputs is now baked 0:2000 0750 into the image on a read-only rootfs — asserted, never set, so an image that did not bake it is refused. All routes denied; the evaluator still reads its datasets. Provisioning attacks its own boundary before any trial and refuses on no verdict, with the denying layer named.

Known and documented: /run/training/output is not sealed the same way, so a subject may still reach judge verdicts. Closing it changes a path launch.v2 names and is left for a follow-up.

Verification

Typecheck, build, unit suite 454 files / 3806 tests with coverage thresholds met, scripts 38/38, and check-boundaries.mjs clean.

🤖 Generated with Claude Code

…es with a non-empty deny list and service.json v2
apresmoi and others added 29 commits September 17, 2026 16:37
# Conflicts:
#	package.json
#	runtime-images/training/Dockerfile
#	src/compiler/training/preparation/image.ts
# Conflicts:
#	src/compiler/containerDaimonGrokWorkerProvisioning.ts
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@apresmoi
apresmoi merged commit d3b1f65 into main Sep 18, 2026
3 checks passed
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