Blueforce-Linux/provisioning
emirhanmamak-blueforce d2672eb776 fix(offline-repo): read dpkg-deb output in both of its shapes
dpkg-deb prints a BARE VALUE when one control field is requested and
"<Field>: <value>" when several are. Every reader was written for one shape and
broke on the other, so no pool could be read and no pin could be matched against
real files:

- build-index.sh: kept the label, so "Package: curl" failed the name check and
  the pool came out empty -- the build refused with "no .deb files";
- add-packages.sh (read_deb): rejected every genuine .deb as an invalid name;
  (scan_existing): produced empty keys, so a version conflict went undetected
  and the same package was copied twice;
- build-offline-repo.sh: compared a labelled value with a "package=version" pin,
  which can never match.

A first attempt with `sed 's/^Field: //'` was wrong in the other direction: sed
-v prints nothing when the pattern does not match, which emptied the single-field
reads. The label is now dropped only when it is present
(awk: if the first word ends with a colon), which leaves a bare value and a
version like "1:2.3-4" untouched.

Also fixed in build-index.sh: the foreign-file guard did not list
repo-manifest.yaml, the record this script writes into the bundle itself, so
every second build stopped on its own previous output. Accepting it is what
makes a rebuild possible at all.

Tests
- The dpkg-deb stub now reproduces both shapes, the single- and the multi-field
  one. It emitted only one, which is exactly why this class stayed invisible
  while the suite was green.
- The rebuild case mirrors the production layout (record inside the output
  directory) and is proven by mutation: removing repo-manifest.yaml from the
  guard's allow-list turns it red.
2026-09-16 21:57:44 +03:00
..
autoinstall feat(field-os): provisioning layer, real ISO build, offline contracts 2026-09-16 11:14:42 +03:00
enrollment feat(field-os): provisioning layer, real ISO build, offline contracts 2026-09-16 11:14:42 +03:00
firstboot feat(install): internet-free install flow, auto-discovered local packages 2026-09-16 16:53:24 +03:00
iso feat(install): internet-free install flow, auto-discovered local packages 2026-09-16 16:53:24 +03:00
offline-repo fix(offline-repo): read dpkg-deb output in both of its shapes 2026-09-16 21:57:44 +03:00
release feat(field-os): provisioning layer, real ISO build, offline contracts 2026-09-16 11:14:42 +03:00
README.md feat(field-os): provisioning layer, real ISO build, offline contracts 2026-09-16 11:14:42 +03:00

Blueforce OS provisioning

Bu dizin işletim sistemi provisioning kapsamının sahibidir. Mevcut scripts/install/ uygulama bootstrap'ı olarak kalır ve burada taşınmaz.

Güvenlik sınırları:

  • Bu iskelet cihaz kimliği, parola, private key, token veya bayiye özel veri içermez.
  • Autoinstall V1 disk seçmez ve silmez; interactive-sections: [storage] teknisyen seçimini zorunlu tutar.
  • Upstream ISO ve paketler örtük indirilmez. Her ISO işleminden önce açık SHA256 doğrulaması gerekir.
  • Remaster araçları xorriso yoksa veya boot metadatası desteklenmiyorsa başarısız olur.
  • Firstboot sadece sekiz haneli bayi numarası biçimini denetler; kurucu veya enrollment çağrısı yapmaz.

Kontrol:

tests/check-provisioning-static.sh

LAB doğrulaması, hedef Ubuntu sürümü, boot menüsü entegrasyonu, gerçek identity storage ve enrollment taşıma güvenliği sonraki fazların açık işleridir.