@sanning/proof 0.19.0 → 0.19.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/case.d.ts CHANGED
@@ -243,6 +243,7 @@
243
243
  */
244
244
  import { type DeclarationRole } from "./declaration.js";
245
245
  import { type PackGradeCauseKind, type PackVerdict } from "./grading.js";
246
+ import type { EnvironmentMarker } from "./environment.js";
246
247
  import type { SideContentMap } from "./side-content.js";
247
248
  /**
248
249
  * The verdicts a case can reach. Every one is already in use in
@@ -991,15 +992,30 @@ export declare const CASE_RELIANCE: Readonly<Record<CaseVerdict, string>>;
991
992
  */
992
993
  export declare const CASE_RELIANCE_HANDOFF_CLAUSE = "Every hand-off with both sides in this drop is intact.";
993
994
  /**
994
- * What a reader may rely on for one case reading (5.5.6 v1.28, A35), byte
995
- * for byte the text `case_reliance`'s Python sibling returns.
995
+ * The sentence a case reading's reliance line gains where its packs hold an
996
+ * envelope signed `environment: "dev"` (5.5.6, A48), keyed by the environment
997
+ * marker (`environmentMarker`): `dev` where every envelope is signed dev,
998
+ * `mixed` where only some are. Inserted after the line's first sentence, for
999
+ * every verdict word. A drop with no `dev` envelope has no marker and gains
1000
+ * nothing.
1001
+ */
1002
+ export declare const CASE_RELIANCE_SANDBOX: Readonly<Record<EnvironmentMarker, string>>;
1003
+ /**
1004
+ * What a reader may rely on for one case reading (5.5.6 v1.38, A35 and A48),
1005
+ * byte for byte the text `case_reliance`'s Python sibling returns.
996
1006
  *
997
- * For every word but `verified` this is `CASE_RELIANCE` unchanged. For
1007
+ * For every word but `verified` the base is `CASE_RELIANCE` unchanged. For
998
1008
  * `verified`, the hand-off clause is inserted after the first sentence
999
1009
  * where `handoffRecords` is not zero, and left out where it is zero: the
1000
1010
  * base sentence never claims a hand-off the drop does not hold.
1011
+ *
1012
+ * Where `environmentMarker` is `dev` or `mixed`, the `CASE_RELIANCE_SANDBOX`
1013
+ * sentence for it is inserted after the first sentence, for every word, so
1014
+ * it directly follows the claim it qualifies (and precedes the hand-off
1015
+ * clause). Where it is null or absent, the text is exactly what it was
1016
+ * before A48.
1001
1017
  */
1002
- export declare function caseReliance(verdict: CaseVerdict, handoffRecords: number): string;
1018
+ export declare function caseReliance(verdict: CaseVerdict, handoffRecords: number, environmentMarker?: EnvironmentMarker | null): string;
1003
1019
  /** The three witness states, and how each is printed (5.5.6, D7). No other. */
1004
1020
  export declare const WITNESS_STATES: {
1005
1021
  readonly confirmed: "Confirmed on the public record";
package/dist/case.js CHANGED
@@ -1854,23 +1854,58 @@ export const CASE_RELIANCE = {
1854
1854
  */
1855
1855
  export const CASE_RELIANCE_HANDOFF_CLAUSE = "Every hand-off with both sides in this drop is intact.";
1856
1856
  /**
1857
- * What a reader may rely on for one case reading (5.5.6 v1.28, A35), byte
1858
- * for byte the text `case_reliance`'s Python sibling returns.
1857
+ * The sentence a case reading's reliance line gains where its packs hold an
1858
+ * envelope signed `environment: "dev"` (5.5.6, A48), keyed by the environment
1859
+ * marker (`environmentMarker`): `dev` where every envelope is signed dev,
1860
+ * `mixed` where only some are. Inserted after the line's first sentence, for
1861
+ * every verdict word. A drop with no `dev` envelope has no marker and gains
1862
+ * nothing.
1863
+ */
1864
+ export const CASE_RELIANCE_SANDBOX = {
1865
+ dev: "The records in this drop are sandbox records, signed environment " +
1866
+ "dev: they are not production evidence.",
1867
+ mixed: "Some records in this drop are sandbox records, signed environment " +
1868
+ "dev: those are not production evidence.",
1869
+ };
1870
+ /**
1871
+ * What a reader may rely on for one case reading (5.5.6 v1.38, A35 and A48),
1872
+ * byte for byte the text `case_reliance`'s Python sibling returns.
1859
1873
  *
1860
- * For every word but `verified` this is `CASE_RELIANCE` unchanged. For
1874
+ * For every word but `verified` the base is `CASE_RELIANCE` unchanged. For
1861
1875
  * `verified`, the hand-off clause is inserted after the first sentence
1862
1876
  * where `handoffRecords` is not zero, and left out where it is zero: the
1863
1877
  * base sentence never claims a hand-off the drop does not hold.
1878
+ *
1879
+ * Where `environmentMarker` is `dev` or `mixed`, the `CASE_RELIANCE_SANDBOX`
1880
+ * sentence for it is inserted after the first sentence, for every word, so
1881
+ * it directly follows the claim it qualifies (and precedes the hand-off
1882
+ * clause). Where it is null or absent, the text is exactly what it was
1883
+ * before A48.
1864
1884
  */
1865
- export function caseReliance(verdict, handoffRecords) {
1885
+ export function caseReliance(verdict, handoffRecords, environmentMarker = null) {
1886
+ let first;
1887
+ let rest;
1866
1888
  if (verdict === "verified" && handoffRecords > 0) {
1867
- return ("Every pack in this drop is genuine, unaltered, and matches its own " +
1868
- "signed declaration. Every hand-off with both sides in this drop is " +
1869
- "intact. Every record in it was signed by its holder's key. This " +
1870
- "was read offline, on this device. It does not say this drop holds " +
1871
- "everything that was recorded.");
1889
+ first = "Every pack in this drop is genuine, unaltered, and matches its own signed declaration.";
1890
+ rest =
1891
+ "Every hand-off with both sides in this drop is intact. Every record " +
1892
+ "in it was signed by its holder's key. This was read offline, on this " +
1893
+ "device. It does not say this drop holds everything that was recorded.";
1894
+ }
1895
+ else {
1896
+ const base = CASE_RELIANCE[verdict];
1897
+ const cut = base.indexOf(". ");
1898
+ first = base.slice(0, cut + 1);
1899
+ rest = base.slice(cut + 2);
1872
1900
  }
1873
- return CASE_RELIANCE[verdict];
1901
+ // Only `dev` and `mixed` add the sentence. Any other value, which the type
1902
+ // forbids but an untyped caller can pass, reads as no marker.
1903
+ const sandbox = environmentMarker === "dev" || environmentMarker === "mixed"
1904
+ ? CASE_RELIANCE_SANDBOX[environmentMarker]
1905
+ : null;
1906
+ if (sandbox === null)
1907
+ return `${first} ${rest}`;
1908
+ return `${first} ${sandbox} ${rest}`;
1874
1909
  }
1875
1910
  /** The three witness states, and how each is printed (5.5.6, D7). No other. */
1876
1911
  export const WITNESS_STATES = {
package/dist/cli.js CHANGED
@@ -2696,7 +2696,7 @@ async function caseCommand(argv, io) {
2696
2696
  const data = {
2697
2697
  verdict: reading.verdict,
2698
2698
  title: reading.verdict === "verified" && marker !== null ? SANDBOX_TITLE : titleOf(reading.verdict),
2699
- reliance: caseReliance(reading.verdict, reading.handoffRecords),
2699
+ reliance: caseReliance(reading.verdict, reading.handoffRecords, marker),
2700
2700
  exit_code: code,
2701
2701
  summary: renderCaseSummary(reading),
2702
2702
  witness: {
package/dist/index.d.ts CHANGED
@@ -10,7 +10,7 @@ export { PACK_GRADE_CAUSE_KINDS, PACK_VERDICTS, accountDisclosure, completenessN
10
10
  export type { CompletenessNote, DisclosureAccount, GradeInput, PackGrade, PackGradeCause, PackGradeCauseKind, PackVerdict, } from "./grading.js";
11
11
  export { DECLARATION_CONTENT_KINDS, DECLARATION_DEVIATION_KINDS, DECLARATION_NOTE_KINDS, DECLARATION_ROLES, DECLARATION_VERDICTS, DECLARATION_VERSION, DECLARATION_VERSION_V2, DECLARATION_VERSION_V3, DECLARATION_VERSIONS, checkDeclaration, declarationClaims, packRecords, renderContentFinding, renderDeclarationSummary, renderDeviation, renderNote, } from "./declaration.js";
12
12
  export type { DeclarationCheck, DeclarationClaims, DeclarationContentFinding, DeclarationContentKind, DeclarationDeviation, DeclarationDeviationKind, DeclarationNote, DeclarationNoteKind, DeclarationRole, DeclarationVerdict, PackRecord, } from "./declaration.js";
13
- export { CASE_BODY_TYPES, CASE_EXCEPTION_KINDS, CASE_QUARANTINED_PROFILES, CASE_RECORD_PROFILES, CASE_RECORD_STATUSES, CASE_NOTE_KINDS, CASE_RELIANCE, CASE_RELIANCE_HANDOFF_CLAUSE, CASE_VERDICTS, CONTENT_WITHHELD_BY_DECLARATION, CO_SIGNATURES_PRESENT, VERDICT_DISPLAY_TITLES, WITNESS_NOT_LOOKED_UP, WITNESS_STATES, WITNESS_TIME_CACHED, WITNESS_TIME_RECORDED, caseReliance, readCase, renderCaseNote, renderCaseSummary, renderException, renderWitnessLine, } from "./case.js";
13
+ export { CASE_BODY_TYPES, CASE_EXCEPTION_KINDS, CASE_QUARANTINED_PROFILES, CASE_RECORD_PROFILES, CASE_RECORD_STATUSES, CASE_NOTE_KINDS, CASE_RELIANCE, CASE_RELIANCE_HANDOFF_CLAUSE, CASE_RELIANCE_SANDBOX, CASE_VERDICTS, CONTENT_WITHHELD_BY_DECLARATION, CO_SIGNATURES_PRESENT, VERDICT_DISPLAY_TITLES, WITNESS_NOT_LOOKED_UP, WITNESS_STATES, WITNESS_TIME_CACHED, WITNESS_TIME_RECORDED, caseReliance, readCase, renderCaseNote, renderCaseSummary, renderException, renderWitnessLine, } from "./case.js";
14
14
  export { MAX_BLOCK_TIME, MAX_WITNESS_CACHE_DEPTH, WITNESS_CACHE_NAME, WITNESS_CACHE_VERSION, checkWitnessCache, formatBlockTime, readWitnessCache, renderWitnessTime, witnessTimeQuery, } from "./witness-cache.js";
15
15
  export type { CachedWitnessTime, WitnessTimeAnswer, WitnessTimeCheck } from "./witness-cache.js";
16
16
  export { lookupPublicRecord, onChainHalf, witnessLine } from "./witness-lookup.js";
package/dist/index.js CHANGED
@@ -94,7 +94,7 @@ export { DECLARATION_CONTENT_KINDS, DECLARATION_DEVIATION_KINDS, DECLARATION_NOT
94
94
  //
95
95
  // Pure: data in, data out, no I/O. Additive: a new module, no existing export
96
96
  // changes, and no new verdict word anywhere.
97
- export { CASE_BODY_TYPES, CASE_EXCEPTION_KINDS, CASE_QUARANTINED_PROFILES, CASE_RECORD_PROFILES, CASE_RECORD_STATUSES, CASE_NOTE_KINDS, CASE_RELIANCE, CASE_RELIANCE_HANDOFF_CLAUSE, CASE_VERDICTS, CONTENT_WITHHELD_BY_DECLARATION, CO_SIGNATURES_PRESENT, VERDICT_DISPLAY_TITLES, WITNESS_NOT_LOOKED_UP, WITNESS_STATES, WITNESS_TIME_CACHED, WITNESS_TIME_RECORDED, caseReliance, readCase, renderCaseNote, renderCaseSummary, renderException, renderWitnessLine, } from "./case.js";
97
+ export { CASE_BODY_TYPES, CASE_EXCEPTION_KINDS, CASE_QUARANTINED_PROFILES, CASE_RECORD_PROFILES, CASE_RECORD_STATUSES, CASE_NOTE_KINDS, CASE_RELIANCE, CASE_RELIANCE_HANDOFF_CLAUSE, CASE_RELIANCE_SANDBOX, CASE_VERDICTS, CONTENT_WITHHELD_BY_DECLARATION, CO_SIGNATURES_PRESENT, VERDICT_DISPLAY_TITLES, WITNESS_NOT_LOOKED_UP, WITNESS_STATES, WITNESS_TIME_CACHED, WITNESS_TIME_RECORDED, caseReliance, readCase, renderCaseNote, renderCaseSummary, renderException, renderWitnessLine, } from "./case.js";
98
98
  // The witnessed-time cache (evidence-bundle 5.6.6, v1.25, A30): read it, look it
99
99
  // up, print it. Never an input to a verdict.
100
100
  export { MAX_BLOCK_TIME, MAX_WITNESS_CACHE_DEPTH, WITNESS_CACHE_NAME, WITNESS_CACHE_VERSION, checkWitnessCache, formatBlockTime, readWitnessCache, renderWitnessTime, witnessTimeQuery, } from "./witness-cache.js";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sanning/proof",
3
- "version": "0.19.0",
3
+ "version": "0.19.1",
4
4
  "description": "TypeScript kernel of the Sanning verification stack: RFC 8785 (JCS) canonicalization, SHA-256, and Ed25519 verification for Verifiable Event Envelopes. Full-family verifier (inline + external commitment); accepts sanning.agent/v1 and sanning.events/v2. Conformance-gated byte-for-byte against the test-vectors corpus.",
5
5
  "license": "MIT",
6
6
  "type": "module",
package/src/case.ts CHANGED
@@ -272,6 +272,7 @@ import {
272
272
  completenessNotes,
273
273
  gradePack,
274
274
  } from "./grading.js";
275
+ import type { EnvironmentMarker } from "./environment.js";
275
276
  import type { SideContentMap } from "./side-content.js";
276
277
  import { renderWitnessTime } from "./witness-cache.js";
277
278
 
@@ -2306,25 +2307,64 @@ export const CASE_RELIANCE_HANDOFF_CLAUSE =
2306
2307
  "Every hand-off with both sides in this drop is intact.";
2307
2308
 
2308
2309
  /**
2309
- * What a reader may rely on for one case reading (5.5.6 v1.28, A35), byte
2310
- * for byte the text `case_reliance`'s Python sibling returns.
2310
+ * The sentence a case reading's reliance line gains where its packs hold an
2311
+ * envelope signed `environment: "dev"` (5.5.6, A48), keyed by the environment
2312
+ * marker (`environmentMarker`): `dev` where every envelope is signed dev,
2313
+ * `mixed` where only some are. Inserted after the line's first sentence, for
2314
+ * every verdict word. A drop with no `dev` envelope has no marker and gains
2315
+ * nothing.
2316
+ */
2317
+ export const CASE_RELIANCE_SANDBOX: Readonly<Record<EnvironmentMarker, string>> = {
2318
+ dev:
2319
+ "The records in this drop are sandbox records, signed environment " +
2320
+ "dev: they are not production evidence.",
2321
+ mixed:
2322
+ "Some records in this drop are sandbox records, signed environment " +
2323
+ "dev: those are not production evidence.",
2324
+ };
2325
+
2326
+ /**
2327
+ * What a reader may rely on for one case reading (5.5.6 v1.38, A35 and A48),
2328
+ * byte for byte the text `case_reliance`'s Python sibling returns.
2311
2329
  *
2312
- * For every word but `verified` this is `CASE_RELIANCE` unchanged. For
2330
+ * For every word but `verified` the base is `CASE_RELIANCE` unchanged. For
2313
2331
  * `verified`, the hand-off clause is inserted after the first sentence
2314
2332
  * where `handoffRecords` is not zero, and left out where it is zero: the
2315
2333
  * base sentence never claims a hand-off the drop does not hold.
2334
+ *
2335
+ * Where `environmentMarker` is `dev` or `mixed`, the `CASE_RELIANCE_SANDBOX`
2336
+ * sentence for it is inserted after the first sentence, for every word, so
2337
+ * it directly follows the claim it qualifies (and precedes the hand-off
2338
+ * clause). Where it is null or absent, the text is exactly what it was
2339
+ * before A48.
2316
2340
  */
2317
- export function caseReliance(verdict: CaseVerdict, handoffRecords: number): string {
2341
+ export function caseReliance(
2342
+ verdict: CaseVerdict,
2343
+ handoffRecords: number,
2344
+ environmentMarker: EnvironmentMarker | null = null,
2345
+ ): string {
2346
+ let first: string;
2347
+ let rest: string;
2318
2348
  if (verdict === "verified" && handoffRecords > 0) {
2319
- return (
2320
- "Every pack in this drop is genuine, unaltered, and matches its own " +
2321
- "signed declaration. Every hand-off with both sides in this drop is " +
2322
- "intact. Every record in it was signed by its holder's key. This " +
2323
- "was read offline, on this device. It does not say this drop holds " +
2324
- "everything that was recorded."
2325
- );
2349
+ first = "Every pack in this drop is genuine, unaltered, and matches its own signed declaration.";
2350
+ rest =
2351
+ "Every hand-off with both sides in this drop is intact. Every record " +
2352
+ "in it was signed by its holder's key. This was read offline, on this " +
2353
+ "device. It does not say this drop holds everything that was recorded.";
2354
+ } else {
2355
+ const base = CASE_RELIANCE[verdict];
2356
+ const cut = base.indexOf(". ");
2357
+ first = base.slice(0, cut + 1);
2358
+ rest = base.slice(cut + 2);
2326
2359
  }
2327
- return CASE_RELIANCE[verdict];
2360
+ // Only `dev` and `mixed` add the sentence. Any other value, which the type
2361
+ // forbids but an untyped caller can pass, reads as no marker.
2362
+ const sandbox =
2363
+ environmentMarker === "dev" || environmentMarker === "mixed"
2364
+ ? CASE_RELIANCE_SANDBOX[environmentMarker]
2365
+ : null;
2366
+ if (sandbox === null) return `${first} ${rest}`;
2367
+ return `${first} ${sandbox} ${rest}`;
2328
2368
  }
2329
2369
 
2330
2370
  /** The three witness states, and how each is printed (5.5.6, D7). No other. */
package/src/cli.ts CHANGED
@@ -3083,7 +3083,7 @@ async function caseCommand(argv: readonly string[], io: Cli): Promise<number> {
3083
3083
  const data = {
3084
3084
  verdict: reading.verdict,
3085
3085
  title: reading.verdict === "verified" && marker !== null ? SANDBOX_TITLE : titleOf(reading.verdict),
3086
- reliance: caseReliance(reading.verdict, reading.handoffRecords),
3086
+ reliance: caseReliance(reading.verdict, reading.handoffRecords, marker),
3087
3087
  exit_code: code,
3088
3088
  summary: renderCaseSummary(reading),
3089
3089
  witness: {
package/src/index.ts CHANGED
@@ -234,6 +234,7 @@ export {
234
234
  CASE_NOTE_KINDS,
235
235
  CASE_RELIANCE,
236
236
  CASE_RELIANCE_HANDOFF_CLAUSE,
237
+ CASE_RELIANCE_SANDBOX,
237
238
  CASE_VERDICTS,
238
239
  CONTENT_WITHHELD_BY_DECLARATION,
239
240
  CO_SIGNATURES_PRESENT,
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "rule": "sandbox-evidence",
3
- "ruleVersion": 1,
4
- "statement": "A pack or case holding any envelope signed environment dev is sandbox evidence, not production evidence (envelope-spec section 2). Both commands report environment_marker in --json, dev where every envelope is signed dev and mixed where only some are, and absent otherwise. Such a pack never prints VERIFIED: where it exits 5 verify prints the headline SANDBOX and case the title Sandbox, and wherever the marker is present it prints the line 'Sandbox evidence (environment dev): not production evidence'. It exits 5 where it would otherwise exit 0, and also where every envelope is signed dev and the only unsettled witnesses are simulated; everywhere else it keeps its code, so a failure still exits 1 and a production or mixed pack with a simulated witness still exits 3 (evidence-export.md section 5). No flag turns 5 into 0. A simulated witness (anchor_ref.kind simulated, a sandbox plane's) is never fetched and never counted as checked on a chain, and no line claims an on-chain look-up for a pack whose only witnesses are simulated.",
3
+ "ruleVersion": 2,
4
+ "statement": "A pack or case holding any envelope signed environment dev is sandbox evidence, not production evidence (envelope-spec section 2). Both commands report environment_marker in --json, dev where every envelope is signed dev and mixed where only some are, and absent otherwise. Such a pack never prints VERIFIED: where it exits 5 verify prints the headline SANDBOX and case the title Sandbox, and wherever the marker is present it prints the line 'Sandbox evidence (environment dev): not production evidence'. It exits 5 where it would otherwise exit 0, and also where every envelope is signed dev and the only unsettled witnesses are simulated; everywhere else it keeps its code, so a failure still exits 1 and a production or mixed pack with a simulated witness still exits 3 (evidence-export.md section 5). No flag turns 5 into 0. A simulated witness (anchor_ref.kind simulated, a sandbox plane's) is never fetched and never counted as checked on a chain, and no line claims an on-chain look-up for a pack whose only witnesses are simulated. Wherever the marker is present, the reliance line case prints and writes gains one sentence directly after its first, for every verdict: 'The records in this drop are sandbox records, signed environment dev: they are not production evidence.' where it is dev, and 'Some records in this drop are sandbox records, signed environment dev: those are not production evidence.' where it is mixed (evidence-bundle.md section 5.5.6, A48). Each case's expect.case.reliance is that line in full.",
5
5
  "home": "@sanning/proof: ts/vectors/sandbox-evidence.json, written by tools/gen-vectors/gen_sandbox_evidence_table.py. Held by ts/test/sandbox-evidence.test.ts and tests/test_sandbox_evidence.py, each against these bytes, and by cross-kernel/run_sandbox.sh, which runs both commands as child processes over every case.",
6
6
  "howToUse": "For each case, write `pack` as bundle.json in a folder, and each entry of `logsHex` as logs/<event_id>.json holding the decoded bytes. Run verify on bundle.json (with --logs <folder>/logs where `logsHex` is not empty) and case on the folder, each with --gateways <url,...> where `gateways` is not empty, through a fetch seam that answers each URL in `serves` with its decoded bytes, answers any other URL 404, and records every URL asked. Assert `expect`.",
7
7
  "sandboxLine": "Sandbox evidence (environment dev): not production evidence",
@@ -112,7 +112,8 @@
112
112
  "verdict": "verified",
113
113
  "exit": 5,
114
114
  "environmentMarker": "dev",
115
- "title": "Sandbox"
115
+ "title": "Sandbox",
116
+ "reliance": "Every pack in this drop is genuine, unaltered, and matches its own signed declaration. The records in this drop are sandbox records, signed environment dev: they are not production evidence. Every record in it was signed by its holder's key. This was read offline, on this device. It does not say this drop holds everything that was recorded."
116
117
  }
117
118
  }
118
119
  },
@@ -226,7 +227,8 @@
226
227
  "verdict": "verified",
227
228
  "exit": 5,
228
229
  "environmentMarker": "dev",
229
- "title": "Sandbox"
230
+ "title": "Sandbox",
231
+ "reliance": "Every pack in this drop is genuine, unaltered, and matches its own signed declaration. The records in this drop are sandbox records, signed environment dev: they are not production evidence. Every record in it was signed by its holder's key. This was read offline, on this device. It does not say this drop holds everything that was recorded."
230
232
  }
231
233
  }
232
234
  },
@@ -332,7 +334,8 @@
332
334
  "verdict": "verified",
333
335
  "exit": 5,
334
336
  "environmentMarker": "mixed",
335
- "title": "Sandbox"
337
+ "title": "Sandbox",
338
+ "reliance": "Every pack in this drop is genuine, unaltered, and matches its own signed declaration. Some records in this drop are sandbox records, signed environment dev: those are not production evidence. Every record in it was signed by its holder's key. This was read offline, on this device. It does not say this drop holds everything that was recorded."
336
339
  }
337
340
  }
338
341
  },
@@ -437,7 +440,8 @@
437
440
  "verdict": "verified",
438
441
  "exit": 5,
439
442
  "environmentMarker": "mixed",
440
- "title": "Sandbox"
443
+ "title": "Sandbox",
444
+ "reliance": "Every pack in this drop is genuine, unaltered, and matches its own signed declaration. Some records in this drop are sandbox records, signed environment dev: those are not production evidence. Every record in it was signed by its holder's key. This was read offline, on this device. It does not say this drop holds everything that was recorded."
441
445
  }
442
446
  }
443
447
  },
@@ -543,7 +547,8 @@
543
547
  "verdict": "verified",
544
548
  "exit": 0,
545
549
  "environmentMarker": null,
546
- "title": "Verified"
550
+ "title": "Verified",
551
+ "reliance": "Every pack in this drop is genuine, unaltered, and matches its own signed declaration. Every record in it was signed by its holder's key. This was read offline, on this device. It does not say this drop holds everything that was recorded."
547
552
  }
548
553
  }
549
554
  },
@@ -657,7 +662,8 @@
657
662
  "verdict": "verified",
658
663
  "exit": 0,
659
664
  "environmentMarker": null,
660
- "title": "Verified"
665
+ "title": "Verified",
666
+ "reliance": "Every pack in this drop is genuine, unaltered, and matches its own signed declaration. Every record in it was signed by its holder's key. This was read offline, on this device. It does not say this drop holds everything that was recorded."
661
667
  }
662
668
  }
663
669
  },
@@ -734,7 +740,8 @@
734
740
  "verdict": "verified",
735
741
  "exit": 0,
736
742
  "environmentMarker": null,
737
- "title": "Verified"
743
+ "title": "Verified",
744
+ "reliance": "Every pack in this drop is genuine, unaltered, and matches its own signed declaration. Every record in it was signed by its holder's key. This was read offline, on this device. It does not say this drop holds everything that was recorded."
738
745
  }
739
746
  }
740
747
  },
@@ -840,7 +847,8 @@
840
847
  "verdict": "incomplete",
841
848
  "exit": 3,
842
849
  "environmentMarker": "dev",
843
- "title": "Incomplete"
850
+ "title": "Incomplete",
851
+ "reliance": "Nothing here was proven wrong, and part of it could not be checked: the other side of a hand-off is not in this drop, bytes were not handed over, or a claim could not be read. The records in this drop are sandbox records, signed environment dev: they are not production evidence. Each exception says what is missing and, where a key is known, whose pack would supply it."
844
852
  }
845
853
  }
846
854
  },
@@ -924,7 +932,8 @@
924
932
  "verdict": "verified",
925
933
  "exit": 1,
926
934
  "environmentMarker": "dev",
927
- "title": "Sandbox"
935
+ "title": "Sandbox",
936
+ "reliance": "Every pack in this drop is genuine, unaltered, and matches its own signed declaration. The records in this drop are sandbox records, signed environment dev: they are not production evidence. Every record in it was signed by its holder's key. This was read offline, on this device. It does not say this drop holds everything that was recorded."
928
937
  }
929
938
  }
930
939
  },
@@ -1002,7 +1011,8 @@
1002
1011
  "verdict": "verified",
1003
1012
  "exit": 5,
1004
1013
  "environmentMarker": "dev",
1005
- "title": "Sandbox"
1014
+ "title": "Sandbox",
1015
+ "reliance": "Every pack in this drop is genuine, unaltered, and matches its own signed declaration. The records in this drop are sandbox records, signed environment dev: they are not production evidence. Every record in it was signed by its holder's key. This was read offline, on this device. It does not say this drop holds everything that was recorded."
1006
1016
  }
1007
1017
  }
1008
1018
  },
@@ -1084,7 +1094,8 @@
1084
1094
  "verdict": "verified",
1085
1095
  "exit": 5,
1086
1096
  "environmentMarker": "dev",
1087
- "title": "Sandbox"
1097
+ "title": "Sandbox",
1098
+ "reliance": "Every pack in this drop is genuine, unaltered, and matches its own signed declaration. The records in this drop are sandbox records, signed environment dev: they are not production evidence. Every record in it was signed by its holder's key. This was read offline, on this device. It does not say this drop holds everything that was recorded."
1088
1099
  }
1089
1100
  }
1090
1101
  },
@@ -1166,7 +1177,8 @@
1166
1177
  "verdict": "verified",
1167
1178
  "exit": 3,
1168
1179
  "environmentMarker": null,
1169
- "title": "Verified"
1180
+ "title": "Verified",
1181
+ "reliance": "Every pack in this drop is genuine, unaltered, and matches its own signed declaration. Every record in it was signed by its holder's key. This was read offline, on this device. It does not say this drop holds everything that was recorded."
1170
1182
  }
1171
1183
  }
1172
1184
  },
@@ -1279,7 +1291,8 @@
1279
1291
  "verdict": "verified",
1280
1292
  "exit": 5,
1281
1293
  "environmentMarker": "dev",
1282
- "title": "Sandbox"
1294
+ "title": "Sandbox",
1295
+ "reliance": "Every pack in this drop is genuine, unaltered, and matches its own signed declaration. The records in this drop are sandbox records, signed environment dev: they are not production evidence. Every record in it was signed by its holder's key. This was read offline, on this device. It does not say this drop holds everything that was recorded."
1283
1296
  }
1284
1297
  }
1285
1298
  },
@@ -1392,7 +1405,8 @@
1392
1405
  "verdict": "verified",
1393
1406
  "exit": 3,
1394
1407
  "environmentMarker": "mixed",
1395
- "title": "Sandbox"
1408
+ "title": "Sandbox",
1409
+ "reliance": "Every pack in this drop is genuine, unaltered, and matches its own signed declaration. Some records in this drop are sandbox records, signed environment dev: those are not production evidence. Every record in it was signed by its holder's key. This was read offline, on this device. It does not say this drop holds everything that was recorded."
1396
1410
  }
1397
1411
  }
1398
1412
  },
@@ -1474,7 +1488,8 @@
1474
1488
  "verdict": "verified",
1475
1489
  "exit": 3,
1476
1490
  "environmentMarker": "dev",
1477
- "title": "Sandbox"
1491
+ "title": "Sandbox",
1492
+ "reliance": "Every pack in this drop is genuine, unaltered, and matches its own signed declaration. The records in this drop are sandbox records, signed environment dev: they are not production evidence. Every record in it was signed by its holder's key. This was read offline, on this device. It does not say this drop holds everything that was recorded."
1478
1493
  }
1479
1494
  }
1480
1495
  },
@@ -1586,7 +1601,8 @@
1586
1601
  "verdict": "verified",
1587
1602
  "exit": 3,
1588
1603
  "environmentMarker": "dev",
1589
- "title": "Sandbox"
1604
+ "title": "Sandbox",
1605
+ "reliance": "Every pack in this drop is genuine, unaltered, and matches its own signed declaration. The records in this drop are sandbox records, signed environment dev: they are not production evidence. Every record in it was signed by its holder's key. This was read offline, on this device. It does not say this drop holds everything that was recorded."
1590
1606
  }
1591
1607
  }
1592
1608
  },
@@ -1692,7 +1708,8 @@
1692
1708
  "verdict": "partial",
1693
1709
  "exit": 3,
1694
1710
  "environmentMarker": "dev",
1695
- "title": "Partial"
1711
+ "title": "Partial",
1712
+ "reliance": "Nothing here was proven wrong, and a check could not be completed: a pack names no witness, or a pack in a hand-off reading does not say what it holds. The records in this drop are sandbox records, signed environment dev: they are not production evidence. The exceptions say which."
1696
1713
  }
1697
1714
  }
1698
1715
  },
@@ -1780,7 +1797,8 @@
1780
1797
  "verdict": "verified",
1781
1798
  "exit": 5,
1782
1799
  "environmentMarker": "dev",
1783
- "title": "Sandbox"
1800
+ "title": "Sandbox",
1801
+ "reliance": "Every pack in this drop is genuine, unaltered, and matches its own signed declaration. The records in this drop are sandbox records, signed environment dev: they are not production evidence. Every record in it was signed by its holder's key. This was read offline, on this device. It does not say this drop holds everything that was recorded."
1784
1802
  }
1785
1803
  }
1786
1804
  },
@@ -1872,7 +1890,8 @@
1872
1890
  "verdict": "verified",
1873
1891
  "exit": 5,
1874
1892
  "environmentMarker": "dev",
1875
- "title": "Sandbox"
1893
+ "title": "Sandbox",
1894
+ "reliance": "Every pack in this drop is genuine, unaltered, and matches its own signed declaration. The records in this drop are sandbox records, signed environment dev: they are not production evidence. Every record in it was signed by its holder's key. This was read offline, on this device. It does not say this drop holds everything that was recorded."
1876
1895
  }
1877
1896
  }
1878
1897
  },
@@ -2005,7 +2024,8 @@
2005
2024
  "verdict": "verified",
2006
2025
  "exit": 5,
2007
2026
  "environmentMarker": "dev",
2008
- "title": "Sandbox"
2027
+ "title": "Sandbox",
2028
+ "reliance": "Every pack in this drop is genuine, unaltered, and matches its own signed declaration. The records in this drop are sandbox records, signed environment dev: they are not production evidence. Every record in it was signed by its holder's key. This was read offline, on this device. It does not say this drop holds everything that was recorded."
2009
2029
  }
2010
2030
  }
2011
2031
  },
@@ -2097,7 +2117,8 @@
2097
2117
  "verdict": "verified",
2098
2118
  "exit": 3,
2099
2119
  "environmentMarker": null,
2100
- "title": "Verified"
2120
+ "title": "Verified",
2121
+ "reliance": "Every pack in this drop is genuine, unaltered, and matches its own signed declaration. Every record in it was signed by its holder's key. This was read offline, on this device. It does not say this drop holds everything that was recorded."
2101
2122
  }
2102
2123
  }
2103
2124
  },
@@ -2183,7 +2204,8 @@
2183
2204
  "verdict": "verified",
2184
2205
  "exit": 3,
2185
2206
  "environmentMarker": null,
2186
- "title": "Verified"
2207
+ "title": "Verified",
2208
+ "reliance": "Every pack in this drop is genuine, unaltered, and matches its own signed declaration. Every record in it was signed by its holder's key. This was read offline, on this device. It does not say this drop holds everything that was recorded."
2187
2209
  }
2188
2210
  }
2189
2211
  },
@@ -2309,7 +2331,8 @@
2309
2331
  "verdict": "verified",
2310
2332
  "exit": 3,
2311
2333
  "environmentMarker": "dev",
2312
- "title": "Sandbox"
2334
+ "title": "Sandbox",
2335
+ "reliance": "Every pack in this drop is genuine, unaltered, and matches its own signed declaration. The records in this drop are sandbox records, signed environment dev: they are not production evidence. Every record in it was signed by its holder's key. This was read offline, on this device. It does not say this drop holds everything that was recorded."
2313
2336
  }
2314
2337
  }
2315
2338
  },
@@ -2397,7 +2420,8 @@
2397
2420
  "verdict": "verified",
2398
2421
  "exit": 5,
2399
2422
  "environmentMarker": "dev",
2400
- "title": "Sandbox"
2423
+ "title": "Sandbox",
2424
+ "reliance": "Every pack in this drop is genuine, unaltered, and matches its own signed declaration. The records in this drop are sandbox records, signed environment dev: they are not production evidence. Every record in it was signed by its holder's key. This was read offline, on this device. It does not say this drop holds everything that was recorded."
2401
2425
  }
2402
2426
  }
2403
2427
  },
@@ -2489,7 +2513,8 @@
2489
2513
  "verdict": "verified",
2490
2514
  "exit": 5,
2491
2515
  "environmentMarker": "dev",
2492
- "title": "Sandbox"
2516
+ "title": "Sandbox",
2517
+ "reliance": "Every pack in this drop is genuine, unaltered, and matches its own signed declaration. The records in this drop are sandbox records, signed environment dev: they are not production evidence. Every record in it was signed by its holder's key. This was read offline, on this device. It does not say this drop holds everything that was recorded."
2493
2518
  }
2494
2519
  }
2495
2520
  }