Blueforce-Linux/docs
emirhanmamak-blueforce 06c96690ca fix(offline): keep the package payload out of a clone, and say so when it is missing
The bundle pool is ~884 MB and now travels through Git LFS, so a plain clone
materialises all of it. Measured on this repository: 2.7 GB working tree, against
20 MB with smudge disabled -- the same 135x that decides whether one device or
seven hundred can be provisioned from a git remote.

bf-bootstrap exports GIT_LFS_SKIP_SMUDGE=1 for every git operation it performs
(clone and fetch), so provisioning a device no longer implies downloading the
package payload. The trade is explicit and documented rather than hidden: with
smudge off the pool files on disk are 131-byte pointer texts, and the installer
must not mistake one for a package.

So the installer gained a guard. A pointer text satisfies every existence check,
so without it the run died later inside `sha256sum -c` and reported a checksum
mismatch -- a misdiagnosis that sends an operator looking for corruption when the
payload was simply never fetched. It now recognises the pointer by content and
names the remedy instead.

Getting the payload is a deliberate second step, and both documented routes are
real: a local mirror (the offline-correct path, and the one the fleet uses) or
`git lfs pull --include='provisioning/offline-repo/built/pool/*'`, which fetches
only the delivery pool and leaves the intake copy under packages/ unfetched --
verified: 1.8 GB and a real .deb in built/pool, 131-byte stub still in packages/.

Tests: test-field-os-lifecycle.sh gains a scenario that lays down a pointer text
where a .deb belongs and asserts three things -- the run refuses, the message
names the cause, and it does not blame a checksum. Also asserts apt-get is never
invoked. 16 scenarios, all passing.

docs/27 is corrected where it had gone stale: it claimed a clone carries the
packages and the installer downloads nothing, which stopped being true the moment
the payload moved to LFS.
2026-09-16 22:41:53 +03:00
..
00-MASTER-PLAN.md docs: Blueforce 700-device fleet architecture (TR) - GNOME baseline 2026-09-15 17:03:02 +03:00
01-ARCHITECTURE.md feat(field-os): provisioning layer, real ISO build, offline contracts 2026-09-16 11:14:42 +03:00
02-DEVICE-NAMING-AND-INVENTORY.md docs: Blueforce 700-device fleet architecture (TR) - GNOME baseline 2026-09-15 17:03:02 +03:00
03-UBUNTU-BASELINE.md feat(field-os): provisioning layer, real ISO build, offline contracts 2026-09-16 11:14:42 +03:00
04-GOLDEN-IMAGE-AND-PROVISIONING.md feat(field-os): provisioning layer, real ISO build, offline contracts 2026-09-16 11:14:42 +03:00
05-ONE-CLICK-INSTALLER.md feat(offline-repo): build the APT index so installs work without network 2026-09-16 21:42:27 +03:00
06-USERS-SSH-AND-PERMISSIONS.md docs: Blueforce 700-device fleet architecture (TR) - GNOME baseline 2026-09-15 17:03:02 +03:00
07-REMOTE-ACCESS.md feat(field-os): provisioning layer, real ISO build, offline contracts 2026-09-16 11:14:42 +03:00
08-WIREGUARD-AND-NETWORK.md feat(field-os): provisioning layer, real ISO build, offline contracts 2026-09-16 11:14:42 +03:00
09-FLEET-MANAGEMENT.md docs: Blueforce 700-device fleet architecture (TR) - GNOME baseline 2026-09-15 17:03:02 +03:00
10-UPDATE-AND-ROLLBACK-POLICY.md docs: Blueforce 700-device fleet architecture (TR) - GNOME baseline 2026-09-15 17:03:02 +03:00
11-SECURITY-HARDENING.md docs: Blueforce 700-device fleet architecture (TR) - GNOME baseline 2026-09-15 17:03:02 +03:00
12-DOCKER-OPERATIONS.md docs: Blueforce 700-device fleet architecture (TR) - GNOME baseline 2026-09-15 17:03:02 +03:00
13-MEG-LINUX-ACCEPTANCE.md docs: Blueforce 700-device fleet architecture (TR) - GNOME baseline 2026-09-15 17:03:02 +03:00
14-MONITORING-AND-HEALTH.md feat(field-os): provisioning layer, real ISO build, offline contracts 2026-09-16 11:14:42 +03:00
15-LOGGING.md docs: Blueforce 700-device fleet architecture (TR) - GNOME baseline 2026-09-15 17:03:02 +03:00
16-POWER-LOSS-AND-AUTO-RECOVERY.md feat(field-os): provisioning layer, real ISO build, offline contracts 2026-09-16 11:14:42 +03:00
17-BACKUP-RECOVERY-AND-REINSTALL.md docs: Blueforce 700-device fleet architecture (TR) - GNOME baseline 2026-09-15 17:03:02 +03:00
18-PILOT-AND-700-DEVICE-ROLLOUT.md docs: Blueforce 700-device fleet architecture (TR) - GNOME baseline 2026-09-15 17:03:02 +03:00
19-TROUBLESHOOTING.md feat(offline-repo): build the APT index so installs work without network 2026-09-16 21:42:27 +03:00
20-FIELD-TECHNICIAN-RUNBOOK.md feat(offline-repo): build the APT index so installs work without network 2026-09-16 21:42:27 +03:00
21-CENTRAL-ADMIN-RUNBOOK.md feat(offline-repo): build the APT index so installs work without network 2026-09-16 21:42:27 +03:00
22-DOCUMENTATION-PLATFORM.md docs: Blueforce 700-device fleet architecture (TR) - GNOME baseline 2026-09-15 17:03:02 +03:00
23-SECURITY-AND-LICENSE-AUDIT.md docs: Blueforce 700-device fleet architecture (TR) - GNOME baseline 2026-09-15 17:03:02 +03:00
24-DECISION-LOG.md feat(field-os): provisioning layer, real ISO build, offline contracts 2026-09-16 11:14:42 +03:00
25-IMPLEMENTATION-ROADMAP.md feat(field-os): provisioning layer, real ISO build, offline contracts 2026-09-16 11:14:42 +03:00
26-BLUEFORCE-FIELD-OS-ISO.md feat(field-os): provisioning layer, real ISO build, offline contracts 2026-09-16 11:14:42 +03:00
27-OFFLINE-PROVISIONING.md fix(offline): keep the package payload out of a clone, and say so when it is missing 2026-09-16 22:41:53 +03:00
28-WINDOWS-TO-LINUX-MIGRATION.md feat(field-os): provisioning layer, real ISO build, offline contracts 2026-09-16 11:14:42 +03:00
29-DEVICE-ENROLLMENT.md feat(field-os): provisioning layer, real ISO build, offline contracts 2026-09-16 11:14:42 +03:00
30-FIELD-OS-RELEASE-MANAGEMENT.md feat(field-os): provisioning layer, real ISO build, offline contracts 2026-09-16 11:14:42 +03:00
31-LEARNING-GUIDE.md feat(field-os): provisioning layer, real ISO build, offline contracts 2026-09-16 11:14:42 +03:00
32-REPOSITORY-AUDIT-AND-CONFLICTS.md feat(field-os): provisioning layer, real ISO build, offline contracts 2026-09-16 11:14:42 +03:00
33-OPERATOR-CONSOLE.md feat(console): group the operator console and give it a type and colour system 2026-09-16 22:38:01 +03:00
_TEMPLATE.md feat(field-os): provisioning layer, real ISO build, offline contracts 2026-09-16 11:14:42 +03:00
DESIGN.md feat(design): add the operator design system the two surfaces share 2026-09-16 22:20:15 +03:00
UI-REMAINING-WORK.md feat(web): add the central fleet panel the operator asked for first 2026-09-16 22:39:50 +03:00