1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
//! Public wire DTO for `ossctl release verify` — the read-only reconcile report
//! (ADR-0002 §1, ADR-0003 state table).
//!
//! `release verify` reads a journaled run and, for each *published* target,
//! reconciles the recorded [`PublishReceipt`](crate::protocol::journal::PublishReceipt)
//! against what the registry currently holds — never mutating the repo, the
//! journal, or the registry. The result is this report, emitted under the
//! canonical `{schema_version, data, warnings}` envelope, so it carries no
//! document version of its own ([`crate::SCHEMA_VERSION`] versions the envelope).
//!
//! ## The `Unknown` discipline
//!
//! Every per-target outcome is a [`VerifyOutcome`]; a reconcile that *could not
//! be performed* (a registry outage, an unresolvable package, a distribution
//! target not observable through [`RegistryQuery`](crate::ports::RegistryQuery))
//! is [`VerifyOutcome::Unknown`], **never** [`VerifyOutcome::Missing`] — the same
//! tri-state presence discipline `ossctl audit` uses. An outage must never be
//! read as "the release did not land".
use Serialize;
use crateRunStatus;
use crateVerifyOutcome;
/// The read-only reconcile report for one journaled run — the body of
/// `ossctl release verify`'s success envelope.
///
/// Reconciles the run's *published* targets (those with a durable receipt)
/// against current registry state. A run that was interrupted before publishing
/// a declared target simply has no receipt to reconcile for it; that is surfaced
/// as an envelope warning by the CLI, not as a false [`VerifyOutcome::Missing`].
/// One published target reconciled against the registry.
/// Rollup counts across all reconciled targets — the four [`VerifyOutcome`]
/// classes plus the total, so a caller branches on `conflicts`/`missing` without
/// re-tallying [`ReconcileReport::targets`].