Skip to main content

Module source

Module source 

Source
Expand description

The training source: materialise a spec into a local tree, then build it there. Never build from a mount, and never lose an mtime. The training source: a spec, a local tree, a build.

A box that compiles its own training binary links against the exact libtorch it holds, which is what makes the ABI match by construction rather than by manifest discipline. It needs the tree on LOCAL disk first: cargo fingerprints by stat’ing every source file on every invocation, so building over a network mount pays that latency thousands of times before a line compiles, and the attribute caching that would fix the latency makes cargo miss real changes and hand back a stale binary.

So a mount is a transport for the fetch, never a compile location, and every spec lands the same way: materialise into a local directory, then build there. One code path, which is why the dev loop is exercised by the production path instead of being a second mode.

The fetch must preserve mtimes. A copy that stamps every file fresh makes cargo rebuild everything, so the loop silently degrades to cold builds while still looking incremental. rsync -a preserves them; a git fetch plus checkout only writes what changed. Both behave, and nothing else here is allowed to.

Structs§

Built
A built training binary and the directory it expects as cwd.
Manifest
The controller’s answer to “what is this run”, written beside the source it published and read by every box that fetches it.

Enums§

Source
Where a source tree comes from.

Constants§

MANIFEST_FILE
File name of the run manifest, at the root of a published tree.

Functions§

build
Build the tree and hand back the binary.
build_env
The environment a build recipe gets: the same names an fdl.yml commands.run line already relies on, so a recipe that works there works here.
check_build
Run the recipe for the compile alone, no artifact check — the shape an extra publish gate wants: its CARGO_TARGET_DIR points somewhere the bin: convention does not, and success IS its whole verdict.
materialize
Put the tree at dest, preserving mtimes. Idempotent by construction: both resolvers are incremental refreshes, so a re-dial costs the changed files and nothing else.
parse
Parse a source spec.