Skip to content

spec(ml): train_slice_model -- reuse file_io_contract's byte_sum instead of a copy (dup-body ratchet red on master) #10206

Closed as not planned

Description

@gHashTag

Goal

Turn the Duplicate Body Ratchet on master green again. #10186 added byte_total to specs/ml/train_slice_model.t27, a copy of byte_sum in specs/ml/file_io_contract.t27. The ratchet now fails on master (f581a2c) and on every PR: "a body written under byte_sum is now copied 2 time(s) and was in no ledger". Part of epic #10024 (cell 25).

Boundary

  • specs/ml/file_io_contract.t27: byte_sum becomes pub; its body does not change.
  • specs/ml/train_slice_model.t27: byte_total is deleted and its two call sites call byte_sum, which the spec already reaches through use ml::file_io_contract.
  • No ledger is blessed: the copy is removed, not declared.

Scenarios

  • Given the change, When tools/dupe_scan.py runs, Then it reports no new group for byte_sum.
  • Given the change, When the train_slice_model binary runs, Then it writes the same 379-byte checkpoint as before (sha256 0dfdef22...cdbeb), because the checksum function is the same body.

Requirements

  • FR-001: byte_total MUST be gone from specs/ml/train_slice_model.t27.
  • FR-002: specs/ml/file_io_contract.t27 MUST still pass 12/12 and specs/ml/train_slice_model.t27 5/5, 0 vacuous, on the Railway lab.
  • FR-003: No duplicate-body ledger file may change.

Success Criteria

  • python3 tools/dupe_scan.py exits 0.
  • The specs/ml/train_slice_model.t27 binary exits 0 and its /tmp/t27_train_slice.bin is 379 bytes with sha256 0dfdef2200b3daa2930cb081f8fb4a58caf5677bae3f329ee23f0e2c328cdbeb.

Close criteria

  • The PR merges with the Duplicate Body Ratchet green.

Activity

  1. gHashTag commented on Oct 18, 2026

    @gHashTag
    OwnerAuthor

    Duplicate of #10203, which PR #10205 closes with the same change.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions