From a8bb284b5538b95186c5ba27a57c8cfef5306c5f Mon Sep 17 00:00:00 2001 From: gunbc-ci-auto-heal Date: Mon, 5 Oct 2026 10:04:05 +0000 Subject: [PATCH 1/2] RFM: first element of a list has three spellings (roster first / list_head / list_at_optional 0) Co-Authored-By: Claude Opus 5.5 (1M context) --- ..._element_of_a_list_has_three_spellings.dag | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 dag/gunbc/recurring_failure_mode/first_element_of_a_list_has_three_spellings.dag diff --git a/dag/gunbc/recurring_failure_mode/first_element_of_a_list_has_three_spellings.dag b/dag/gunbc/recurring_failure_mode/first_element_of_a_list_has_three_spellings.dag new file mode 100644 index 00000000000..fbb3b1592e1 --- /dev/null +++ b/dag/gunbc/recurring_failure_mode/first_element_of_a_list_has_three_spellings.dag @@ -0,0 +1,21 @@ +module gunbc.recurring_failure_mode.first_element_of_a_list_has_three_spellings + +import std.types { NonEmptyStr } +import std.decl_ref { DeclarationRef, WholeDeclaration } +import gunbc.recurring_failure_mode { RecurringFailureMode } + +data first_element_of_a_list_has_three_spellings: RecurringFailureMode = RecurringFailureMode { + identity: "first_element_of_a_list_has_three_spellings" as NonEmptyStr, + receipts: [ + "INVALID STATE: one operation -- the first element of a list, or its absence -- has three spellings (a DESIGN section 3 nickname fork). (1) The std.algebra free_monoid_collection_templates roster row first (ReceiverSelf -> OptionalOf), which has no declaration, so a bare first(xs) is unbound on the v2 native route (found on N7's route at v2.compiler.dependency_demand_census demand_fact_head_is_lexical and demand_fact_head_is_parameter). (2) v2.std.algebra list_head, 89 callers, returning its OWN carrier ListHeadResult = HeadFound | HeadAbsent. (3) v2.std.collection list_at_optional(xs, 0). The roster siblings last and get carry the same shape of fork beside their own declared spellings.", + "SECOND FORK INSIDE THE FIRST: ListHeadResult is an Optional-shaped carrier -- a fourth spelling of Optional beside the generic v2.std.optional Optional -- so it is ALSO in the scope of bright-fox-661's Optional de-fork (one Optional authority on both routes), which should retire it onto that authority rather than this row restating its own.", + "HARM: callers pick a spelling per site, so one fact is answered three ways with two result carriers, and the undeclared roster spelling refuses on the native route. RUNG FOUND AT: mitigatable (the unbound name refuses loudly). CEILING: structurally impossible -- one typing authority per collection op. OWNER: the XL-2 roster lane (lively-crane-656); the roster binding is stern-swift-290's roster route. NEXT-RUNG TRIGGER, NAMING THE CAPABILITY: collection roster ops are the single typing authority for first/last/get, their result type the one Optional authority, with list_head and list_at_optional retired onto them delete-first (per calm-boar-904's ruling that the roster row is the single authority for collection ops), SUFFICIENT FOR no module to spell first-element, last-element or index access any other way.", + ], + evidence: [ + DeclarationRef { module_path: "std.algebra", decl_name: "free_monoid_collection_templates", field: WholeDeclaration }, + DeclarationRef { module_path: "v2.std.algebra", decl_name: "list_head", field: WholeDeclaration }, + DeclarationRef { module_path: "v2.std.algebra", decl_name: "ListHeadResult", field: WholeDeclaration }, + DeclarationRef { module_path: "v2.std.collection", decl_name: "list_at_optional", field: WholeDeclaration }, + DeclarationRef { module_path: "v2.std.optional", decl_name: "Optional", field: WholeDeclaration }, + ], +} From 355e40a735e2b212fea093bc4d8a22d62259ccf4 Mon Sep 17 00:00:00 2001 From: gunbc-ci-auto-heal Date: Mon, 5 Oct 2026 10:08:35 +0000 Subject: [PATCH 2/2] =?UTF-8?q?RFM=20first-element:=20name=20the=20query?= =?UTF-8?q?=20instead=20of=20transcribing=20the=20caller=20count=20(DESIGN?= =?UTF-8?q?=20=C2=A76)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 5.5 (1M context) --- .../first_element_of_a_list_has_three_spellings.dag | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dag/gunbc/recurring_failure_mode/first_element_of_a_list_has_three_spellings.dag b/dag/gunbc/recurring_failure_mode/first_element_of_a_list_has_three_spellings.dag index fbb3b1592e1..ba4ce6215a4 100644 --- a/dag/gunbc/recurring_failure_mode/first_element_of_a_list_has_three_spellings.dag +++ b/dag/gunbc/recurring_failure_mode/first_element_of_a_list_has_three_spellings.dag @@ -7,7 +7,7 @@ import gunbc.recurring_failure_mode { RecurringFailureMode } data first_element_of_a_list_has_three_spellings: RecurringFailureMode = RecurringFailureMode { identity: "first_element_of_a_list_has_three_spellings" as NonEmptyStr, receipts: [ - "INVALID STATE: one operation -- the first element of a list, or its absence -- has three spellings (a DESIGN section 3 nickname fork). (1) The std.algebra free_monoid_collection_templates roster row first (ReceiverSelf -> OptionalOf), which has no declaration, so a bare first(xs) is unbound on the v2 native route (found on N7's route at v2.compiler.dependency_demand_census demand_fact_head_is_lexical and demand_fact_head_is_parameter). (2) v2.std.algebra list_head, 89 callers, returning its OWN carrier ListHeadResult = HeadFound | HeadAbsent. (3) v2.std.collection list_at_optional(xs, 0). The roster siblings last and get carry the same shape of fork beside their own declared spellings.", + "INVALID STATE: one operation -- the first element of a list, or its absence -- has three spellings (a DESIGN section 3 nickname fork). (1) The std.algebra free_monoid_collection_templates roster row first (ReceiverSelf -> OptionalOf), which has no declaration, so a bare first(xs) is unbound on the v2 native route (found on N7's route at v2.compiler.dependency_demand_census demand_fact_head_is_lexical and demand_fact_head_is_parameter). (2) v2.std.algebra list_head, the most widely called of the three (its callers are re-derived by a word-grep for list_head over dag and src/v2), returning its OWN carrier ListHeadResult = HeadFound | HeadAbsent. (3) v2.std.collection list_at_optional(xs, 0). The roster siblings last and get carry the same shape of fork beside their own declared spellings.", "SECOND FORK INSIDE THE FIRST: ListHeadResult is an Optional-shaped carrier -- a fourth spelling of Optional beside the generic v2.std.optional Optional -- so it is ALSO in the scope of bright-fox-661's Optional de-fork (one Optional authority on both routes), which should retire it onto that authority rather than this row restating its own.", "HARM: callers pick a spelling per site, so one fact is answered three ways with two result carriers, and the undeclared roster spelling refuses on the native route. RUNG FOUND AT: mitigatable (the unbound name refuses loudly). CEILING: structurally impossible -- one typing authority per collection op. OWNER: the XL-2 roster lane (lively-crane-656); the roster binding is stern-swift-290's roster route. NEXT-RUNG TRIGGER, NAMING THE CAPABILITY: collection roster ops are the single typing authority for first/last/get, their result type the one Optional authority, with list_head and list_at_optional retired onto them delete-first (per calm-boar-904's ruling that the roster row is the single authority for collection ops), SUFFICIENT FOR no module to spell first-element, last-element or index access any other way.", ],