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
//! forjar#497: the planner's census of what it did not measure.
//!
//! `determine_present_action` lets an observed probe override a matching
//! config hash, and falls through to the hash comparison when there is no
//! probe. So a MISSING probe and a probe that found nothing stale produce the
//! same `NoOp`, and the probe is only taken for machines this host answers
//! for — every SSH target, and since forjar#495 every pepita namespace, has
//! planned `NoOp` over changed sources for as long as the probe has existed.
//!
//! The action is left alone on purpose. Planning `Update` for every resource
//! this host cannot probe would rebuild every remote task on every apply and
//! break f(f(x)) = f(x) at the plan level. What changes is that the plan says
//! which resources it could not measure, in the shape `drift` already uses
//! for a resource it could not evaluate: named, with a reason, never counted
//! as clean by omission. This is the repository's own doctrine — an
//! UNMEASURED check must never print the same thing as a passed one.
//!
//! The census is a pure post-pass over the finished change set. It reads the
//! config, the changes and the probe map the planner was handed, and nothing
//! else: no filesystem, no transport.
use crate;
use crate;
/// Name every converged resource whose declared build I/O this plan did not
/// measure, per (resource, machine).
///
/// `NoOp` only. A resource that plans `Create` or `Update` is going to run,
/// so a missing probe hides nothing behind it; listing it would be the
/// unconditional banner the forjar#342 contract forbids, and noise is how a
/// disclosure stops being read. A resource that declares no `task_inputs`,
/// `ambient_inputs` or `output_artifacts` had nothing to probe and is never
/// named.
///
/// Called AFTER `propagation`, so a `NoOp` that a rebuilt prerequisite just
/// promoted to `Update` is no longer counted as silence.
pub
/// The resource declares something the probe would have measured.
/// Why no probe stands behind this (resource, machine), or `None` when one
/// does.
///
/// The map decides, alone. It is keyed by (machine, resource) since
/// forjar#499, so an entry is a digest of THAT machine's tree and nothing
/// else. `probe_covers` (one definition, shared with the probe) only words
/// the reason: a machine this host does not answer for was skipped on
/// purpose; a machine it does answer for with no entry is a probe the caller
/// could have taken and did not — an older caller passing an empty map, or a
/// digest that came back empty and was dropped.