RestorSignal Documentation

Evidence dossier format

The physical structure, lifecycle, and sealing of a daily Evidence dossier.

The evidence package describes what is documented. This page describes how it is structured: the physical format defined by RS-RVP-04, aimed at integrators and independent verifiers.

One dossier per context, per calendar day

RestorSignal produces at most one sealed Evidence dossier per context and per calendar day, consolidating every run received in that period:

storage/evidence/<tenant_id>/<evidence_id>/
├── manifest.json          (period_type, context_id, period_start/period_end, state, bundle)
├── context/                (scope — shared across the period's runs)
├── execution/
│   ├── runs/<run_id>.json   (one file per contributing run: its own artifact/environment/request)
│   ├── controls.json         (every check from every run, each tagged with its source run)
│   ├── errors.json
│   ├── events.ndjson
│   └── result.json           (the period's synthesized rollup: run_count, consolidated_status)
├── references/               (reference framework, software components)
├── integrity/                 (hashes, root hash, seal)
└── reports/                    (FR/EN renders)

manifest.json is the dossier's index: period_type/period_start/period_end/context_id identify the period covered, and bundle carries the period's validation envelope (per-level breakdown, highest demonstrated level, consolidated status) — distinct from the single-run EvidenceBundle object defined by RS-RVP-02/RS-RVP-03, since a daily dossier has no single run/artifact to describe.

Lifecycle

CREATED → RUNS_RECORDED → EVALUATED → SEALED

The dossier is created and its runs recorded only once the period has closed — never speculatively on every run received during the day. After SEALED, the dossier carries a separate validity state (VALID/INVALID). A SEALED dossier is never rewritten: a run arriving after sealing is recorded on its own but never folds into an already-sealed dossier.

Consolidated result

The period's consolidated_status is never simply the last run's result. It follows a fixed severity order across every run in the period:

FAIL > ERROR (NOT_TESTED / INCONCLUSIVE) > NOT_APPLICABLE > PASS

The most severe status observed during the period is the dossier's consolidated result, even if most runs in that period passed — see Result statuses and Control statuses for the underlying vocabulary.

Sealing

Before SEALED: every file in the dossier (excluding integrity/ and manifest.json itself) is SHA-256 hashed (integrity/hashes.json), then the sorted <hash> <path> list is itself hashed to produce a deterministic root hash (integrity/seal.json). An independent verifier reproduces both steps to confirm no file changed since sealing.

Retention and public verification

A sealed dossier's retention_until is fixed at sealing time and never changes retroactively. Retention does not depend on whether the underlying subscription remains active: a sealed dossier and its public verification link stay available until retention_until, independently of account status. See the Verify portal documentation for the public verification flow.

Going further

The complete daily-aggregation rules — period boundaries, late-run handling, retention — are defined by RS-RVP-04. The single-run Evidence Bundle concept it builds on (one run's own sealed technical result, distinct from the daily product described on this page) remains defined by RS-RVP-03.

Documentation version : 2.0Last reviewed : 2026-08-15Associated reference : RS-RVP-04 v1.0