You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
[ID01 F44] Add a governed generic activation path for qualified first-party microVM candidates #19
First-party microVM candidate qualification deliberately produces host/runtime evidence with eligibleForPromotion=false. There is currently no maintained, generic authority that can activate a qualified candidate as a catalogue runtime.
The existing local-developer source-and-target pin update is a reviewed code change for a specific baseline. It does not provide a reusable activation mechanism for future qualified candidates.
Impact
Maintainers cannot promote a qualified candidate through a uniform, auditable route. Each successor requires a bespoke code change, making rollback and approval invalidation difficult to reason about across physical images.
Acceptance criteria
Define a versioned activation authority that selects only an exact qualified candidate identity.
Make catalogue revision, acquisition source, runtime profile fingerprints, and pending-approval invalidation atomic.
Record predecessor-linked, forward-only rollback with crash recovery and cache-coherence checks.
Preserve fail-closed refusal for unqualified, mismatched, or stale candidates.
Keep candidate qualification as host/runtime evidence until activation is explicitly approved.
Cover selected-entry drift, interrupted activation, rollback, stale approval, and cache mismatch with focused tests.
Out of scope
This issue does not request a project run, a provider change, an automatic promotion, or a change to engineering verdict semantics.
Fact-check scope
ID01 F44; reviewed on 2026-09-09. Source inspection, focused tests where relevant, and recorded evidence establish only the scope stated here.
Source pointers (local checkout; the public mirror may lag):
État vérifié : aucune autorité d'activation n'existe. La chaîne s'arrête à candidate-qualification/1.0 (eligibleForPromotion=false, host-runtime-only, pas de L3/L4/L5). Le catalogue est purement code-owned (createFirstPartyCapabilityRuntimeCatalog + createFirstPartyMicrosandboxImageBootstrapDescriptors, pins target.manifestDigest + source en dur) : aucun overlay local n'est lu par le serveur. Il n'y a donc aujourd'hui aucun consommateur pour un état d'activation.
Atomicité : un seul write fichier (record + head) ; rollback = nouvel head re-pointant vers le pin prédécesseur, jamais de suppression ; crash recovery par fichier pending à la ledger store ; refus fail-closed si candidat non qualifié / mismatch / stale (recalcul des fingerprints à la lecture, rebind à l'entrée matrice courante).
Cohérence cache : vérification Microsandbox (digest activé présent, pin catalogue actif intact) avant/après write, en lecture seule via les API existantes (pas de tag/retag, comme l'import).
Invalidation : les attestations lient unit.manifestFingerprint — le record d'activation nomme le catalogue remplacé pour que tout lecteur sur un fingerprint antérieur échoue fermé.
Décisions mainteneur bloquantes :
Créer un overlay catalogue lu par le serveur (local-capability-runtime-read-composition + cache-preparation-registry) ? Sans consommateur, l'autorité écrit dans le vide ; avec, c'est un changement de composition runtime live pour tous les projets — décision conséquente, pas une implémentation agent autonome.
Périmètre exact de l'invalidation des approbations pending (attestations + admin lock + révisions ledger pending ?) et cérémonie d'approbation explicite (qui signe, où).
Recommandation : garder OPEN ; trancher 1–2 (MRTR mainteneur) avant tout code. L'implémentation estimée ensuite : record + store + CLI + overlay + docs + tests ciblés (drift, interruption, rollback, stale, cache-mismatch).
Activity
superWorldSavior commentedon Sep 25, 2026
Analyse de cadrage (pas d'implémentation — décision mainteneur requise, voir fin).
État vérifié : aucune autorité d'activation n'existe. La chaîne s'arrête à
candidate-qualification/1.0(eligibleForPromotion=false,host-runtime-only, pas de L3/L4/L5). Le catalogue est purement code-owned (createFirstPartyCapabilityRuntimeCatalog+createFirstPartyMicrosandboxImageBootstrapDescriptors, pinstarget.manifestDigest+sourceen dur) : aucun overlay local n'est lu par le serveur. Il n'y a donc aujourd'hui aucun consommateur pour un état d'activation.Design proposé (pattern import/qualify : file authority + CLI plan/--run/--recover + how-to mainteneur) :
first-party-microsandbox-image-candidate-activation/1.0: identité exacte du candidat qualifié (physicalImageId + fingerprint import-record + fingerprint qualification + 3 digests OCI/msb), fingerprint du catalogue code auquel il s'applique, source d'acquisition post-activation, fingerprints des profils runtime, fingerprint d'activation prédécesseur (chaîne forward-only), approbation mainteneur explicite.unit.manifestFingerprint— le record d'activation nomme le catalogue remplacé pour que tout lecteur sur un fingerprint antérieur échoue fermé.Décisions mainteneur bloquantes :
local-capability-runtime-read-composition+ cache-preparation-registry) ? Sans consommateur, l'autorité écrit dans le vide ; avec, c'est un changement de composition runtime live pour tous les projets — décision conséquente, pas une implémentation agent autonome.Recommandation : garder OPEN ; trancher 1–2 (MRTR mainteneur) avant tout code. L'implémentation estimée ensuite : record + store + CLI + overlay + docs + tests ciblés (drift, interruption, rollback, stale, cache-mismatch).