Blueforce-Linux/docs
emirhanmamak-blueforce e28783e563 feat(offline-repo): build the APT index so installs work without network
The package pool was committed but the installer still stopped at "no local
package repository": it requires the compiled bundle (Packages, Packages.gz,
packages.lock.tsv, SHA256SUMS), and building that had never run.

The bundle
- 1321 packages, 884 MiB, Ubuntu 26.04 amd64, built with apt-ftparchive on the
  fleet's own release so the closure matches the devices.
- built/pool/ is gitignored: those .deb files are already tracked once under
  provisioning/offline-repo/packages/, and the same ~890 MB does not need a
  second path. What the installer reads from the bundle is the index.
- The output directory is chmod 0755: mktemp -d created it 0700 and left it
  so, which made a valid bundle unreadable to the installer's probe.

dpkg-deb output was parsed wrong in four places
- `dpkg-deb -f <file> Package Version` prints "<Field>: <value>", and the
  callers kept the whole line, so the value carried its label. build-index.sh
  therefore accepted no package at all and reported an empty pool;
  add-packages.sh rejected every real .deb as an invalid name, missed version
  conflicts, and copied a duplicate; build-offline-repo.sh never matched a pin.
- The test suite could not see any of this: its dpkg-deb stub emitted bare
  values. The stub now prints the labels exactly as the real tool does, which
  is what surfaced the remaining three sites.

Tests
- The secret scan covers the files we author, not apt-ftparchive's index over
  third-party packages: polkit's own description reads "...asked for their
  password:", which is prose in the packages, not a leak. Any secret reaching a
  manifest, README or tool is still caught.
- The "test build must not touch the bundle" assertion now compares the
  directory before and after instead of demanding it be empty, so a
  maintainer's real build is not reported as test spill.
2026-09-16 21:42:27 +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 feat(offline-repo): build the APT index so installs work without network 2026-09-16 21:42:27 +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(offline-repo): build the APT index so installs work without network 2026-09-16 21:42:27 +03:00
_TEMPLATE.md feat(field-os): provisioning layer, real ISO build, offline contracts 2026-09-16 11:14:42 +03:00