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
//! What:
//! Candidate content:
//! what a commit or push would add,
//! read from the index or objects,
//! and the scanner run over it.
//! Why:
//! Policies judge candidates,
//! so the readers and the scanner adapter share a folder.
//!
//! In TS you'd write (pseudocode):
//! ```ts
//! // candidate/index.ts: one `export * from './file'` per module below.
//! ```
/// The one failure type of the candidate layer and its closed list of causes.
/// Validated Git object names and the file modes a candidate can carry.
/// Pure framing of one `git cat-file --batch` reply.
/// Pure parsing of raw NUL-delimited changed-path records.
/// The long-lived object reader that answers every blob read of an invocation.
/// Immutable candidate versions:
/// identity,
/// pathname,
/// mode,
/// change and object per path.
/// Per-invocation listing,
/// lazy bytes and invalidation of candidate versions.
/// Pure parsing of `git ls-files --stage` records and the delta between two index states.
/// The files of a commit's tree with their modes and objects.
/// A private,
/// timestamp-preserving copy of the real index,
/// removed when dropped.
/// Which candidate paths have their `text` Git attribute unset,
/// read from the state the candidates were listed from.
/// What `git add` would stage,
/// and the worktree files a direct command selects.
/// Which candidates hold content that a parent commit's tree already holds,
/// found by exact object name.
/// The linked forbidden-strings scanner:
/// one load per invocation,
/// typed redacted findings.
/// Rules-file precedence and which candidates the scanner is given.
/// One scan pass over a candidate version's exact bytes.
/// Which engine failure code each candidate and scanner failure carries.
/// Process isolation and rule fixtures for scanner controls;
/// never in the release build.
pub
/// Loading many blobs through one `git cat-file --batch`.