DS05 — The GCPN Signature Container: Source Document, FES Doc, Process
Trigger S2, Conclusion of Part I
E1 now has three separate artifacts: the source document (MD), the signature doc (JSON), the events (JSON). The examiner asks: How do these fit together? The answer is the GCPN signature container — a variant of the GitCover PrimaNota container (GCPN) that bundles all artifacts of a signature process under one container ID.
GCPN — the container principle
GCPN (GitCover PrimaNota) links all documents of a business transaction in voucher management: original voucher, sidecars, posting logic. The signature container transfers this principle to the signature process:
GCPN-Container (sign)
├── Quell-Dokument (MD) + Sidecar
├── FES-Signatur-Doc (JSON) + Sidecar ← referenziert
├── FES-Output (PDF/HTML, physisch) ← nur bei FES-Verfahren
├── Events (offered/accepted/signed) + Sidecar
├── Facsimile-Grafik-Verweis (SHA-256 + guid-Stempel)
└── Verifikationsmanifest (SHA-256 aller Glieder)
The container file
The container itself is a Markdown document with an embedded JSON artifact (like all GitCover docs):
{
"$schema": "https://gitcover.org/schemas/gcpn-signature-1.0.schema.json",
"uuidV7": "<deterministische uuidV7>",
"type": "gcpn-signature",
"kind": "signature-process",
"container_id": "GCPN-SIG-260913-001",
"scope": {
"tenant": "GCC",
"entity": "ORG-1",
"matter": "[GVB](../../glossar.html#gvb "Gesellschafterversammlungsbeschluss — Glossar") 260825 — GF-Vertrag: Selbständigkeit, Ehrenamt",
"sphere": "wirtschaftlich"
},
"artifacts": [
{
"role": "source",
"kind": "markdown",
"location": "..\\260825-shareholder-meeting-resolution.md",
"sha256": "<SHA-256>",
"sidecar": "..\\260825_*.md.v7g.md"
},
{
"role": "signature-doc",
"kind": "json",
"location": "260913_signature-doc.json",
"sha256": "<SHA-256>",
"sidecar": "260913_signature-doc.json.v7g.md"
},
{
"role": "event",
"kind": "json",
"events": ["offered", "accepted", "signed"],
"location": "260913_event-*.json",
"sha256": "<SHA-256 je Event>",
"sidecar": "260913_event-*.json.v7g.md"
},
{
"role": "facsimile-ref",
"kind": "ref",
"file": "E1.Signature.transparent.FES.svg",
"sha256": "8fcffe0b313f8a1e5b44c1c33cd8073e699b338b6450aa1ba9f33f5587501006",
"guid_stamp": "01a09b48-4580-76f9-b789-024691b989c5",
"note": "Verweis, nicht Einbettung — Grafik liegt im [PII](../../glossar.html#pii "Personally Identifiable Information — Glossar")-Verzeichnis"
},
{
"role": "fes-doc",
"kind": "pdf",
"location": "260913_FES_Envelope-Report.pdf",
"sha256": "<SHA-256>",
"note": "Nur bei FES-Verfahren — physisch im Container-Paket (Teil II)"
}
],
"prev_container": null,
"next_container": null,
"verification": {
"method": "sha256 + jq routine (DS04)",
"verified_at": "2026-09-13T16:00:00Z",
"verified_by": "E1"
}
}
"Initially without predecessor/successor" — the design stage
Important for the saga quality: the container has the fields
prev_container/next_container, but they are null. This is
deliberate — two development stages:
| Stage | prev/next | Meaning |
|---|---|---|
| Stage 1 (today) | null |
Container bundles one process completely; no chaining between containers needed |
| Stage 2 (planned) | SHA-256 of the predecessor container | Container chain for long-term procedures (e.g., contract life cycle with amendments) |
The fields already exist so that later chaining is possible without a
schema break. A container remains immutable — chaining creates a
new container with prev_container = sha256(alt).
The container in three roles
| Artifact | Role in the container | Evidentiary value |
|---|---|---|
| Source document | The content to be signed | Integrity of the version (SHA-256) |
| FES signature doc | The declaration of intent (text form or FES) | Origin attribution (§ 371a ZPO) |
| Accept/Deny/Sign events | The deterministic process | Procedural fairness, chronology |
| Facsimile reference | The drawing as a graphic reference | Identification (§ 126b (3)) |
| FES output (PDF) | The physical FES version | Only for FES procedures — physically included in the container package |
HTML output and the container package
For HTML output (GCBoK website, preview), the container is delivered physically as a package:
<container-id>.gcpn.zip
├── container.md (dieser Container)
├── source.md + .v7g.md
├── signature-doc.json + .v7g.md
├── event-*.json + .v7g.md
├── facsimile.svg (bei FES: physisch, sonst Verweis)
└── fes-envelope-report.pdf (nur bei FES)
The package is self-verifying: the examiner unpacks it and runs the routine from DS04 — without repo access, without Git.
Summary
- The GCPN signature container bundles all artifacts of a signature process under a container ID with a verification manifest.
prev_container/next_containerare prepared (fixed in the schema) but initiallynull— chaining is stage 2.- The FES doc is referenced; the physical FES version (PDF) is included in the container package (Part II).
- Part I ends here. Part II attaches the FES: eIDAS fundamentals, facsimile graphic in the PDF layer, envelope report, container package.
Created: 260913 | Part I, article DS05 | Series: digital-signage