1.9 KiB
1.9 KiB
DevPortal Offline Prep — PREP-DVOFF-64-002
Status: Ready for implementation (2025-11-20)
Owners: DevPortal Offline Guild · AirGap Controller Guild
Scope: Define sealed bundle sample + CLI verify flow for DevPortal offline verification (stella devportal verify bundle.tgz).
Required inputs
- EvidenceLocker sealed bundle contract:
docs/modules/evidence-locker/bundle-packaging.md(bundle.tgz layout, determinism). - Portable bundle guidance:
docs/airgap/portable-evidence.md(for redacted flow).
Sample artefacts to publish
out/devportal/samples/bundle.tgz— copy of EvidenceLocker sealed bundle (write-once).out/devportal/samples/bundle.tgz.sha256—sha256 bundle.tgzline.out/devportal/samples/verify-report.json— expected CLI JSON output after verification (see below).
CLI verification flow (contract)
- Command:
stella devportal verify --bundle bundle.tgz --offline - Steps performed:
- Validate SHA-256 against
.sha256file. - Extract
manifest.json,signature.json,bundle.json,checksums.txt(no rewrite). - Run DSSE verification (offline) using embedded signature; if TSA token present, report but do not fail when
--offlineis set. - Emit JSON output:
- Validate SHA-256 against
{
"status": "verified",
"bundleId": "<bundleId>",
"rootHash": "sha256:0123deadbeef",
"entries": 4,
"createdAt": "2025-01-01T00:00:00Z",
"portable": false
}
- Exit codes: 0 success, 2 checksum mismatch, 3 signature failure, 4 TSA missing (when not offline), 5 unexpected.
- Determinism: no network calls when
--offline; output JSON keys sorted.
Acceptance criteria
- Sample bundle and .sha256 published under
out/devportal/samples/with hashes listed in this sprint. - CLI flow documented above; exit codes and sample JSON provided.
- Prep doc linked from Sprint 0162 P1 and DevPortal docs when implemented.
Next steps
- Publish the sample bundle + hashes; update sprint Delivery Tracker to DONE once artifacts exist.