mesh/1: a signed weights change record, and a gate that holds a backend to it #382
Loading…
Reference in a new issue
No description provided.
Delete branch "feat/mesh-weights-change-record"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Sweep 2026-10-19 item #6, second part. A receipt's
weights_digestnamed the weights that answered. Nothing recorded when a backend's weights changed, from what, or whether the change was planned. Weights could be swapped under a running steward, and every later receipt simply named the new digest.The record (mesh-receipt
change, SPEC §6.5)A
ChangeLogper backend: a hash-chained sequence of JCR-1 entries (mesh_change: "mesh/1"), sealed under the steward key that seals its receipts.fromandto;effective_from, the first receipt-log sequence served on the new weights;appendwhen they are made and byfrom_sealedwhen a party reads a record it was handed:frommust be the weights in effect;effective_frommust not go back;covers(receipt)names the change in effect at the receipt'ssequence, matched on backend, recipe, weights and precision. A log position orders changes against receipts without trusting a clock;made_atis the steward's statement of the time.The gate (mesh-core)
record_weightsswaps an engine in only by recording the change first.plan_changesrecords a plan.governholds a restarted steward to its persisted record. The record must verify, hold, match the running engine, and not apply ahead of the receipt log.change_logexposes the record.Verification (build host)
clippy -D warningsandrustdoc -D warningsare clean.seqandprevchecks survived because each was only tested in combination with the others.Still open from #6
The disclosure bundle beside
cra.rs, as a separate PR in jouleclaw-compliance.🤖 Generated with Claude Code