SCIoT currently contains several generated model artifacts in the source tree. This policy defines the target direction for future cleanup without disrupting existing tests and demos.
| Class | Examples | Git policy |
|---|---|---|
| Source/model tooling | model split scripts, loaders, manifests | Keep in Git. |
| Small deterministic fixtures | tiny test samples, minimal metadata used by tests | Keep in Git under tests/fixtures/ or tests/test_samples/. |
| Runtime metadata | layer_sizes_*.json, valid_offloading_points_*.json |
Keep only when deterministic and small; otherwise regenerate or fetch. |
| Large model binaries | .h5, .tflite, exported model folders |
Move to release assets, Git LFS, or external artifact storage. |
| Research exports | historical experiment folders and generated plots | Archive outside the runtime tree or externalize. |
The preferred long-term model distribution path is:
- Keep source code, manifests, and tiny deterministic fixtures in Git.
- Publish large model binaries as versioned release assets or external artifacts.
- Add a machine-readable model manifest with:
- model ID and version;
- compatible client/server protocol version;
- expected input size;
- list of required files;
- SHA-256 checksums;
- file sizes;
- download URLs or local cache keys.
- Add a fetch/verify command that downloads missing artifacts into a local cache and verifies checksums before runtime use.
The eventual fetch command should support:
- a default cache outside
src/, for exampledata/models/or a user cache; - an override environment variable for CI and offline labs;
- a
--verify-onlymode for CI; - a documented offline workflow using pre-populated cache files.
Do not add new large model binaries to Git. If a test needs a model, prefer a tiny deterministic fixture or mark the test as requiring external model artifacts.