From c6a8f3127d8ebe51d3c38e8a7af4b48ee315d1fc Mon Sep 17 00:00:00 2001 From: gunbc-ci-auto-heal Date: Fri, 21 Aug 2026 16:55:35 +0000 Subject: [PATCH] Sweep the last two .keys() call sites #8726 missed; main has been red since 15:58 #8726 deleted the keys/values/has algebra nicknames. Its own title records the shape of the risk -- "five call sites, four of them silent" -- and it missed two more in the same file, so every PR in the repo has been blocked at floor preparation: trait_derive_supplemental_generic_bound_contract_test.dag:486:30: error: method 'keys' not found on receiver type 'Map(...)' Three failed main runs before this: c603c065ece, 6cebcb364dc, 0ee62a24cbd. The repair is the form THIS FILE ALREADY USES three times (458, 462, 481): `map_keys(x)` rather than `x.keys()`. `grep -rn "\.keys()"` over dag/ and src/v2/ now returns nothing, so the class is swept rather than the two sites patched -- which is the same move #8726 was making and is the reason it is worth re-running the sweep rather than fixing what the diagnostic named. WHY TWO INDEPENDENT SESSIONS MISATTRIBUTED THIS, recorded because the mechanism generalizes past this defect. The diagnostic names lines 486 and 490. #8597 landed afterwards, rewrote nearby code, and incidentally repaired exactly those two call sites -- so a reader checking the cited coordinates on current main finds correct code and concludes the defect is elsewhere or already fixed. The surviving call sites had MOVED to 514 and 518. One session attributed the breakage to #8597 (which landed after all three failing runs and could not have caused them); I nearly attributed it to my own merge, which was merely the first failing run. A file:line in a compiler diagnostic is a POSITIONAL CITATION, and it is valid only against the tree that produced it. DESIGN section 3 legislates this for prose citations -- cite the symbol, not the position -- and the same decay applies here, through a channel nobody thinks of as a citation. The durable reading of a diagnostic is its SYMBOL and its message, and the position is a convenience that expires. Green by execution on the three witnesses in the repaired file. They could not run at all beforehand: the module failed at preparation, so the count of passing witnesses in this file was previously zero, not three. Co-Authored-By: Claude Opus 5 (1M context) --- .../trait_derive_supplemental_generic_bound_contract_test.dag | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/v2/test/claim/emit/trait_derive_supplemental_generic_bound_contract_test.dag b/src/v2/test/claim/emit/trait_derive_supplemental_generic_bound_contract_test.dag index d4ca8413513..60e8cf88114 100644 --- a/src/v2/test/claim/emit/trait_derive_supplemental_generic_bound_contract_test.dag +++ b/src/v2/test/claim/emit/trait_derive_supplemental_generic_bound_contract_test.dag @@ -511,11 +511,11 @@ fn sgb_contract_has_single_parameter_two_requirements( second_trait: ReprGroundingDeriveTrait, second_authority: ExternalAuthority ) -> Bool { - count(contract.requirements.keys()) == 1 + count(map_keys(contract.requirements)) == 1 && match contract.requirements.lookup(representation_parameter) { Absent => false Present { value: requirements } => - count(requirements.keys()) == 2 + count(map_keys(requirements)) == 2 && sgb_requirement_authority_matches( contract: contract, representation_parameter: representation_parameter,