Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions dag/extdeps/bmc/ipmi.dag
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ module extdeps.bmc.ipmi
import extdeps.external_authority { ExternalAuthority }
import extdeps.uri { Uri, Https }
import std.types { Bool, NonEmptyStr }
import std.string_type { String }
data extdeps_external_authority_anchor: ExternalAuthority = ExternalAuthority {
uri: Uri {
scheme: Https
Expand Down
1 change: 1 addition & 0 deletions dag/extdeps/cron/cron.dag
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ module extdeps.cron
import extdeps.external_authority { ExternalAuthority }
import extdeps.uri { Uri, Https }
import std.types { Bool, List }
import std.string_type { String }
data extdeps_external_authority_anchor: ExternalAuthority = ExternalAuthority {
uri: Uri {
scheme: Https
Expand Down
2 changes: 1 addition & 1 deletion dag/extdeps/realization/artifact_store_fs.dag
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
module extdeps.realization.artifact_store_fs

import extdeps.filesystem.filesystem_io
import extdeps.filesystem.filesystem_io { Filesystem }
import extdeps.external_authority { ExternalAuthority }
import extdeps.uri { Uri, Https }
import std.types { String, Bool, Int, List }
Expand Down
37 changes: 36 additions & 1 deletion src/v1/stage0/src/namespace_wave_admission.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1806,7 +1806,42 @@ pub struct TransitionAdmission {
/// relocation is not - product.inventory carries no InventoryLotEvidence on main, checked by
/// identity - so these seven still admit a real delta and deleting them would refuse a live
/// transition rather than discharge a dead one.
pub const NAMESPACE_TRANSITION_ADMISSIONS: &[TransitionAdmission] = &[];
/// ONE ROW, gunbc#11193: the `extdeps_external_authority_anchor` leaf in
/// `extdeps.realization.artifact_store_fs` narrows from two candidates to that module's own.
///
/// WHAT PRODUCED THE DELTA. The `AmbiguousBareNameRead` wall refused `Filesystem` read bare by that
/// module, and prescribed naming the authority: `import extdeps.filesystem.filesystem_io
/// { Filesystem }`. The import had been BRACE-LESS, which binds nothing for the refused name and
/// widens every leaf in the module's candidate sets -- so naming it also removed `filesystem_io`'s
/// own `extdeps_external_authority_anchor` from that leaf's candidates. The anchor motion is a
/// consequence of the prescribed repair, not a second change riding along with it.
///
/// WHY THIS DOES NOT CHANGE WHICH DECLARATION THE SPELLING DENOTES, which is the claim the comment
/// above makes of every row here and the reason this one belongs under it. The spelling occurs
/// EXACTLY ONCE in that module -- line 22, its own `data` declaration -- and nothing reads it:
/// neither of the module's two importers (`test.claim.artifact_store_fs_witness`,
/// `v2.test.claim.manual.emit_source_store_test`) imports the anchor, and the only other corpus
/// references to that leaf are a `decl_name` STRING in `std.citation` and a different module's
/// anchor imported by `test.claim.ilm4926_designation_witness` from
/// `extdeps.cpu_attachment.ilm4926`. So the base two-candidate set sat at a DECLARATION SITE WITH
/// NO REFERENCE anywhere in the closure: there was no denotation to move, only a candidate count
/// that a brace-less import had inflated.
///
/// I DID NOT ESTABLISH WHICH CANDIDATE THE BASE RESOLUTION PICKED, and this row does not need it.
/// The two declarations differ materially -- this module's anchor cites the repository's own
/// `dag/extdeps/realization` tree, `filesystem_io`'s cites the POSIX `write` specification -- so had
/// anything referenced the leaf the question would have mattered and would have needed the resolver
/// run rather than reasoned about. Nothing references it, so the question does not arise.
pub const NAMESPACE_TRANSITION_ADMISSIONS: &[TransitionAdmission] = &[TransitionAdmission {
label: "gunbc#11193 artifact_store_fs anchor leaf narrows to its own declaration",
subject: AdmissionSubject::Binding {
module: "extdeps.realization.artifact_store_fs",
in_declaration: "extdeps_external_authority_anchor",
spelling: "extdeps_external_authority_anchor",
expected_candidates: &["extdeps.realization.artifact_store_fs"],
},
disposition: NamespaceDeltaDisposition::TargetChanged,
}];

/// The denominators a green must name (DESIGN §5): a run that cannot say what it covered is an
/// instrument failure wearing coverage's clothes.
Expand Down
Loading