Aller au contenu

seal

seal est l’outil universel pour les artefacts git : commit, PR mergée, tag, release, snapshot complet du repo, ou ticket Jira. Idempotent — re-sceller le même artefact ne crée pas de doublon.

Le flux : récupération de l’artefact depuis la forge (GitHub / GitLab / Forgejo) → calcul SHA-512 sur le contenu canonique → insertion ledger → scellement IP Secure (si configuré).

project string requis

ID du projet configuré dans SESHAT.

type string requis

Type d’artefact à sceller.

TypeDescriptionCas d’usage
commitCommit git spécifiqueRare en standalone — préférer pr
prPull request mergéeLe plus courant pour le flux dev
tagTag git (version)Releases formelles
releaseRelease GitHub / GitLabAvec notes de release
repoSnapshot complet du repo à un refDépôt légal d’un état complet
jira_issueTicket Jira (avec worklogs)Effort R&D par issue
ref string requis

Référence à l’artefact.

TypeFormat du refExemple
commitSHAabc1234
prNuméro de PR42
tagNom du tagv1.0.0
releaseTag de releasev1.0.0
repoRef git (tag, branche, SHA)v1.0.0
jira_issueIssue keySES-42
asset_types string[]

Type(s) d’actif IP. Plusieurs valeurs possibles.

TypeDescription
logicielCode source (défaut pour PR/commit/tag)
base_donneesBase de données
programme_rndProgramme R&D
savoir_faireSecret industriel
brevetInvention brevetée
dessin_modeleDesign industriel
objective string

Objectif R&D pour la traçabilité CIR. Exemple : "Optimisation latence inférence LLM sous 50ms".

Un bon objectif identifie une incertitude technique et un avancement visé — ce sont les deux critères CIR.

dry_run boolean

Mode preview. Défaut : true quand IP Secure est lié au projet, false sinon.

Quand true, retourne un preview avec le fingerprint prévu, sans rien persister ni signer.

{
"type": "pr",
"reference": "pr:42",
"description": "PR #42: Add MCP transport",
"fingerprint": "sha512:def456...",
"timestamp": "2026-05-27T10:30:00Z",
"asset_types": ["logiciel"],
"objective": null,
"dry_run": false,
"ipsecure_contribution_id": "mwMWTpjmu3",
"ipsecure_certificate_url": null,
"ipsecure_setup_hint": null
}
reference string

Préfixée par le type : commit:, pr:, tag:, release:, jira:, etc. Permet de filtrer le ledger : /odata/ledger?$filter=startswith(reference, 'pr:').

ipsecure_certificate_url string | null

Souvent null à la réponse immédiate — Jinnove génère le certificat de manière asynchrone. Récupérer plus tard avec fetch_certificate.

Scelle la PR 42 pour mon projet

Inclut :

  • SHA du commit de merge
  • Tree hash au point de merge
  • Titre et description de la PR
  • Auteurs (author + merger)
  • Timestamp du merge
Scelle le tag v1.4.2 pour mon projet

Idéal pour marquer un point stable de la base de code. Le sceau prouve :

  • L’état exact du code à ce tag
  • Le timestamp du tag
  • Le contenu complet (via tree hash)

Comme tag, mais inclut en plus :

  • Les notes de release
  • Les assets attachés (binaires, sources)
  • Le timestamp de publication
Scelle un snapshot complet du repo à v1.4.2

Génère un hash de l’arbre git complet à un ref donné. Utile pour les dépôts légaux APP / INPI : on prouve l’état exact de TOUT le repo à un instant.

Scelle l'issue SES-42 (qui a 12h de worklogs)

Sceau d’une issue avec son contenu canonique (summary, status, reporter, worklogs triés). L’effort en heures provient des worklogs Jira.

  1. Vérifier l’état auto-seal

    status verbose

    Si la PR a été auto-scellée via webhook, inutile de la sceller à nouveau.

  2. Sceller manuellement si besoin

    Scelle la PR 42
  3. Tisser les liens du faisceau d’indices

    Cette PR implémente l'issue Jira SES-42 — lie-les

    Voir link_proofs.

  1. Créer le tag git

    Fenêtre de terminal
    git tag v1.4.2
    git push origin v1.4.2
    git push bunker v1.4.2
  2. Sceller le tag

    Scelle le tag v1.4.2
  3. Générer le bundle légal

    Génère le bundle légal pour le tag v1.4.2

    Voir bundle_release.

ErreurCauseSolution
pr_not_mergedTentative de sceller une PR ouverteAttendre le merge
already_sealedSceau dupliqué (fingerprint identique)Safe — la fonction est idempotente, c’est juste un no-op informatif
git_host_not_configuredCredentials forge manquantsVoir Configuration
ref_not_foundRéférence invalideVérifier l’existence du commit/tag/PR
project_not_configuredChamps projet manquantsL’outil renvoie un guide structuré pour configure(action:"update_project")

L’agent doit proactivement proposer un sceau quand :

L’utilisateur dit…L’agent doit…
”Je viens de merger une PR”Vérifier auto-seal, sinon seal(type:"pr")
”Feature terminée”Proposer seal(type:"pr") puis éventuellement un tag
”Time pour une release”Proposer tag → seal → bundle_release
”On a atteint la milestone X”Proposer création + sceau d’un tag