Skip to content

release: v0.2.0 — a nyelv lezárása és a trust-lánc bizonyíthatóvá tétele - #1

Merged
sinkog merged 1 commit into
mainfrom
primitives/releases/v0.2.0
Aug 13, 2026
Merged

release: v0.2.0 — a nyelv lezárása és a trust-lánc bizonyíthatóvá tétele#1
sinkog merged 1 commit into
mainfrom
primitives/releases/v0.2.0

Conversation

@sinkog

@sinkog sinkog commented Aug 13, 2026

Copy link
Copy Markdown
Member

Miért 0.2.0, és miért nem 0.1.6

Ez a kiadás töri a nyelvet. Egy patch-verzió elrejtené, hogy a 0.1.5-re írt kompozíciók nem mind érvényesek alatta.

Terület Mi változik
Role lapos hétértékű enumból három ortogonális tengely (authority / structural / lifecycle); a role: reference rövid alak megszűnt
reference shape_type: reference visszavonva — annotáció lett. A dokumentált cic:{namespace}:{Kind} formátum hibás volt: a namespace már hordozza a prefixet
descriptor typeshape_type, amit minden kompozíció amúgy is így írt
default nem uniform — megfigyelt, derived, volatile és kulcs értékre tilos
surface a node nem mondhat ellent a felületnek; a beágyazott mezők öröklik
presence egyetlen tengely, tagadó alak nélkül
lista minden listának van kulcsa; összetettnél item_key kötelező
envelope v2 a build_hash az egész bundle-t fedi

v1.0.0 korai lenne: a Contract typed payload, az Access policy-grammatika és a conformance/capability kérdés nyitott.

Amit az envelope v2 zár le

A v1 négy tagot fedett, így a kind, a version és a timestamp aláíratlan volt: egy 0.1.5 → 9.9.9 átcímkézés 2099-es időbélyeggel tisztán verifikált. A v2 kizárás alapú (release.sign, release.build_hash, cic_countersign kivételével mindent fed), így egy később hozzáadott mező nem maradhat véletlenül aláíratlanul.

A v1 artifactok továbbra is verifikálnak. D-015 rögzíti, a D-013 módosításaként — az a lezárt döntés azt mondta, hogy a bundle nem tartalmaz build_hash-t, miközben az implementáció két lépésben elmozdult tőle, rögzítetlenül.

Amit a verifier most bizonyít — és amit megtagad állítani

  • a countersign ellenőrizve, és az authority cert a bundle-ben hordozott root ellen. Korábban a séma leírta, a verifier nem nézte: szemétre cserélt countersign is sikert jelentett.
  • a pledge hashe újraszámolva, aláírása ellenőrizve. Korábban csak a kind és a dátumablak — egy kézzel írt, kitalált mezőkkel teli commitment átment.
  • nincs több „integrity OK" olyan artifactra, aminek a láncát nem tudta ellenőrizni. Tételes mérleget ír: mi bizonyított, mi nem.
  • --trust-root <pem> a külső horgony. Nélküle minden cert önmagát állítja — és ezt a kimenet ki is mondja.

Migráció

A docs/RELEASE-0.2.0.md hat lépésben írja le. Mérve a három élő kompozíción (kubernetes-pod, network-interface, compute-resource): egyik lépés sem kell nekik. A szabályok a korpuszból íródtak, nem ellene.

Kapuk

self-test    40/40 fixture, 19 szándékosan hibás
teszt        153
lefedettség  89% (racsni 88)
mutáció      990 mutáns a compiler.py-on; a bizalmi mag túlélői megölve

A make release megtagadja a build-et, ha a grammatika elutasítana egy szállítandó kompozíciót — és előbb lefuttatja a grammatika saját self-testjét: egy checker, ami már nem tud bukni, semmit nem bizonyít arról, amit jóváhagy.

⚠️ Ami még hátravan ezen az ágon

Az aláírt artifact nincs ebben a PR-ben. A make release Vault-kulcsot igényel:

git checkout primitives/releases/v0.2.0
export VAULT_ADDR=... VAULT_TOKEN=...
make pledge          # ha a commitment lejárt
make release         # → release/cic-primitives-v0.2.0.yaml
make verify-release FILE=release/cic-primitives-v0.2.0.yaml
git add release/cic-primitives-v0.2.0.yaml && git commit && git push

A commit ugyanerre az ágra megy, tehát ebbe a PR-be kerül. Merge után jön a tag:

primitives/@v0.2.0

Utána a downstream fanout és a cic-primitive-engine dependency.yaml-jának lezárása (ma main-re mutat, pinned: false).

Miért 0.2.0 és nem 0.1.6: ez a kiadás töri a nyelvet. Egy patch-verzió
elrejtené, hogy a 0.1.5-re írt kompozíciók nem mind érvényesek alatta.

  Role          lapos hétértékű enumból három ortogonális tengely; a
                `role: reference` rövid alak megszűnt
  reference     `shape_type: reference` visszavonva — annotáció lett; a
                dokumentált `cic:{namespace}:{Kind}` formátum hibás volt
  descriptor    `type` → `shape_type`, amit minden kompozíció amúgy is így írt
  default       nem uniform: megfigyelt, derived, volatile és kulcs értékre tilos
  surface       a node nem mondhat ellent a felületnek; a beágyazottak öröklik
  presence      egyetlen tengely, tagadó alak nélkül
  lista         minden listának van kulcsa; összetettnél `item_key` kötelező

  envelope v2   a build_hash az EGÉSZ bundle-t fedi. A v1 négy tagot fedett, így
                a kind/version/timestamp aláíratlan volt — egy 0.1.5 → 9.9.9
                átcímkézés 2099-es időbélyeggel tisztán verifikált. A v1 továbbra
                is verifikál; D-015 rögzíti, a D-013 módosításaként.

A docs/RELEASE-0.2.0.md a migrációt is leírja, és kimondja, amit mérni lehetett:
a három élő kompozíciónak (kubernetes-pod, network-interface, compute-resource)
EGYIK lépés sem kell. A szabályok a korpuszból íródtak, nem ellene.

A README-k OCI példái v0.2.0-ra állítva.

Az aláírt artifact NINCS ebben a commitban: a `make release` Vault-kulcsot
igényel, és ezen az ágon fut le. A kapu addig is zöld: self-test 40/40,
153 teszt, 89% lefedettség.

---
[signing-metadata]
key = cic-my-sign-key
signature = vault:v1:MEUCIQDbbVQ7sW4QOgmRFa8bE9+AENx0VcuBfpacG8vbjHCFOwIgXBd0tg3I2N6qhGM3w3/315qeREy+NgO94yrkP6h0Etc=
hash-algorithm = sha256
digest = 7JU4YiJrxSlHdOSQDCr+kshftKNb4KlNVcQStCGi4dg=

[certificate]
-----BEGIN CERTIFICATE-----
MIICBjCCAaygAwIBAgIUSnRMR6RPnEbg296XWPOqq/u5PCwwCgYIKoZIzj0EAwIw
QzELMAkGA1UEBhMCSFUxGTAXBgNVBAoMEENlbnRyYWxJbmZyYUNvcmUxGTAXBgNV
BAMMEENJQyBEZXZlbG9wZXIgQ0EwHhcNMjYwMzIwMTMyMjU5WhcNMjYxMjMxMTMy
MjU5WjBFMQswCQYDVQQGEwJIVTEZMBcGA1UECgwQQ2VudHJhbEluZnJhQ29yZTEb
MBkGA1UEAwwSR2Fib3IgWm9sdGFuIFNpbmtvMFkwEwYHKoZIzj0CAQYIKoZIzj0D
AQcDQgAEIG2CVmTfmLB9pLLclj7YmP2eedAjklpy4LGrU2ijoiy6Xqpuybv7OgJe
i+ez31s65NEV8+X/ByeX1cstR988z6N8MHowCQYDVR0TBAIwADAdBgNVHQ4EFgQU
yZN6AIX/TNnIJ9GwAa/NRN3ujHAwHwYDVR0jBBgwFoAUXn6CHYzPUqU4JVP8g+OS
WeDYjhcwDgYDVR0PAQH/BAQDAgeAMB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEF
BQcDBDAKBggqhkjOPQQDAgNIADBFAiEA+bFzXRoJ4PCQbhAAtpkcMjt0vNj5rEW0
lOMBGDNyaWkCIB1vmM7PcZzv/c9bIrxF5kqv6QXomouhByUfeNUTbpKW
-----END CERTIFICATE-----
@sinkog
sinkog merged commit 9c67ea4 into main Aug 13, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant