jcp-efficiency: Seal a training run measured energy as training/1 #44

Merged
dcharlot merged 1 commit from jcp-training-receipt into main 2026-07-25 08:57:13 -04:00
Owner

Increment 2 of making Agent Joule a training platform, not just an inference harness. Independent of the FL-2 stack; base is main.

The gap. Every lab racing to ship models publishes efficiency in a unit that is not energy — parameters, throughput, tokens, or a flat "runs on your hardware" that moves the electricity bill onto the buyer with no meter attached. Prior landscape scans repeatedly flagged joules-per-token-trained as the single most strategically important, entirely uncontested number. This seals it.

What. training/1 is the inference-side efficiency/1 turned to face the other direction — same honest-provenance energy (measured/modeled/est., never overclaimed), same JCR-1 sealing (COSE_Sign1/EdDSA, ints+strings only), same hash-chaining, same optional attestation binding. What it adds are the training-specific commitments: base weights, dataset, and resulting weights are each a content id, so a set of weights carries verifiable evidence of what it cost and what data produced it. The dataset id is the verified-exhaust corpus digest from increment 1 (agent-joule joule_core::training), so the chain runs verified run → corpus → weights.

  • Headline recomputed on read: uj_per_token_trained.
  • TrainingMethod = sft / rl / lora / distill.
  • A from-scratch run commits the all-zero base id.

Every commitment is load-bearing — a test flips one envelope byte and verification fails, so a receipt cannot be lifted onto different weights or a different dataset. A modeled (FLOP-estimated) run seals as ModelBased, never HwShunt — the honest-provenance rule applied to exactly the number the industry most wants to fudge.

8 new tests (14 in the crate), full JCP workspace builds with 0 warnings.

Release Notes:

  • Added the training/1 receipt: measured joules-per-token-trained, binding base weights, dataset, and resulting weights
Increment 2 of making Agent Joule a training platform, not just an inference harness. Independent of the FL-2 stack; base is main. **The gap.** Every lab racing to ship models publishes efficiency in a unit that is *not* energy — parameters, throughput, tokens, or a flat "runs on your hardware" that moves the electricity bill onto the buyer with no meter attached. Prior landscape scans repeatedly flagged **joules-per-token-*trained*** as the single most strategically important, entirely uncontested number. This seals it. **What.** `training/1` is the inference-side `efficiency/1` turned to face the other direction — same honest-provenance energy (measured/modeled/est., never overclaimed), same JCR-1 sealing (COSE_Sign1/EdDSA, ints+strings only), same hash-chaining, same optional attestation binding. What it adds are the training-specific **commitments**: base weights, dataset, and resulting weights are each a content id, so a set of weights carries verifiable evidence of *what it cost* and *what data produced it*. The dataset id is the verified-exhaust corpus digest from increment 1 (agent-joule `joule_core::training`), so the chain runs verified run → corpus → weights. - Headline recomputed on read: **`uj_per_token_trained`**. - `TrainingMethod` = sft / rl / lora / distill. - A from-scratch run commits the all-zero base id. **Every commitment is load-bearing** — a test flips one envelope byte and verification fails, so a receipt cannot be lifted onto different weights or a different dataset. A modeled (FLOP-estimated) run seals as `ModelBased`, never `HwShunt` — the honest-provenance rule applied to exactly the number the industry most wants to fudge. 8 new tests (14 in the crate), full JCP workspace builds with 0 warnings. Release Notes: - Added the training/1 receipt: measured joules-per-token-trained, binding base weights, dataset, and resulting weights
Every lab racing to ship models publishes efficiency in some unit that is not
energy — parameters, throughput, tokens, or a flat "runs on your hardware" that
quietly moves the electricity bill onto the buyer with no meter attached. The one
number nobody publishes is joules per token trained. This receipt seals it.

training/1 is the inference-side efficiency/1 turned to face the other direction:
the same honest-provenance energy (measured/modeled/est., never overclaimed), the
same JCR-1 sealing, the same hash-chaining, the same optional attestation binding.
What it adds is the training-specific commitments — the base weights, the dataset,
and the resulting weights are each a content id, so a set of trained weights
carries verifiable evidence of what it cost to produce AND what data produced it.
The dataset id is joule_core::training's corpus digest, so the chain runs from a
verified run through the corpus to the weights it trained.

Every commitment is load-bearing: a test flips one envelope byte and verification
fails, so the receipt cannot be lifted onto different weights or a different
dataset. The energy provenance is recomputed on read and a modeled (FLOP-estimated)
run seals as modeled, never as measured — the honest-provenance rule the whole
family turns on, applied to the number the industry most wants to fudge.

Increment 2 of the training platform: the metered-training receipt. This is the
training-side energy gap prior landscape scans repeatedly flagged as the single
most strategically important and entirely uncontested.

Co-Authored-By: Claude Opus 4.8 <[email protected]>
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
Transaction-Science/open-standards!44
No description provided.