ADR-012: File atomicity¶
Status¶
Accepted; amended by ADR-050.
Decision¶
D1 -- F-1 wins, and the six rows are amended¶
The answer keys follow ADR-010 F-1: every row F-1
withholds carries file_not_fully_migrated, never the bail of a neighbouring group, because a
shape the oracle grades two ways becomes a contradiction in the code graded against it.
D2 -- F-1's unit is the file, so the configure rows move too¶
Every otherwise-auto finding in a file where another bails is withheld by atomicity
(file_not_fully_migrated), not by that group's code, because F-1 leaves the whole file as it
was; a cleanly resolved configure(...) is no exception.
D3 -- caused_by¶
A finding withheld by file_not_fully_migrated, and no other, carries caused_by: the sorted,
de-duplicated bails of the other findings in its file. It is drawn from findings, never from
the bindings table, because it records what the report lists; without it a reader learns that
a file was skipped and not why. repo_not_fully_migrated needs none: F-2 names the files.
D4 -- atomicity is the last rung of the ladder¶
A finding names one bail: the most specific rule that fired for it. file_not_fully_migrated
says only that something else in the file bailed, so it never displaces a code that names a
concrete defect of the row itself, such as receiver_unresolved.
D5 -- the bails an import finding may carry are a closed list¶
An import or star_import finding is the statement, so it may carry only a bail about that
statement, the whole file, or atomicity; the list is SCAN_VOCABULARY.md
§6 and models.Finding enforces it. input_does_not_parse, file_too_large and
runtime_unsupported are absent: a file failing an input gate yields one parse_error
finding, and a blocked repository proposes no edit to withhold.
D6 -- ADR-008's "The honest one" paragraph is corrected, not deleted¶
On the three development-corpus repositories the binding constraint on the automatic rate is F-1, not ADR-008 D2, D3 or C-31: every legacy file there has at least one bailing usage, so the automatic edit count is zero, and C-31 buys no additional edit because each of its sites carries a second, independent bail. ADR-008 carries the correction.
Consequences¶
caused_bytravels throughfindings.json,run.json'swithheld[]andREPORT.md.- A test holds every fixture
caused_byequal to the bails of the other findings in its file. - §7 of the vocabulary lists the values that belong to more than one closed set, and a test fails on any other overlap.