Skip to content

6. No hand-made settings files

  • Date: 2026-11-01; changed 2026-11-05 and 2026-11-08
  • Status: accepted
  • Rule: The kit, and whoever maps a camera, changes settings on the camera, never by editing a file, and uploads only files the camera wrote, checked by their bytes.

Context

A file edited by hand boot-looped Movie mode on 2026-11-01. A check by folder was then not enough: pass 3's switching by file wrote values into a file in a run's dat/ folder and uploaded it.

Decision

This binds the kit and whoever maps a camera. Settings are changed on the camera and watched; only files the camera wrote (its downloads) are uploaded, known by their bytes. Every download's SHA-256 goes into the camera's manifest, runs/<model>_fw<fw>/downloads.jsonl (kit/camkit/provenance.py), and Link.upload and kit/tools/upload_check.py send a file only when its bytes are a download of that camera's, wherever it sits; camlink sends the bytes only when they have the SHA-256 the kit checked, so a file swapped in after the check is never sent. upload_check.py --adopt takes in older downloads that a run's log recorded, at the logged size and unchanged since. Pass 3's switching by file is retired. The editor, which exists to write a file its user edited, is not bound by it: its user writes such a file by their own hand, at their own risk, as the README's warning and its write window say; it never writes its sample. A mapping, or an agent working for an owner, never writes an edited file through the editor either.

Before 2026-11-05 Link.upload refused only a file outside a run's dat/ folder; before 2026-11-08 camlink sent the file without checking its bytes against the kit's SHA-256; the manifest began as one file for every camera, runs/downloads.jsonl, and was per camera by 0.1.0 (2026-11-09); the record named the per-camera manifest, and said where the editor stands, from 2026-11-13.

Consequences

Values a menu cannot reach stay unproved or are proved by what the camera itself writes (a reset, a registration).