Skip to content
Closed
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
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
module gunbc.recurring_failure_mode.service_operation_declared_twice

import std.types { NonEmptyStr }
import std.decl_ref { DeclarationRef, WholeDeclaration }
import gunbc.recurring_failure_mode { RecurringFailureMode }

data service_operation_declared_twice: RecurringFailureMode = RecurringFailureMode {
identity: "service_operation_declared_twice" as NonEmptyStr,

receipts: [
"INVALID STATE: one `service` declares two operations with the same name. v1 accepts it silently and keeps the later declaration, so the earlier operation is unreachable by name and one spelling carries two contracts -- a DESIGN section 3 meaning fork, not a style issue.",
"SPECIMEN: `dag/extdeps/bmc/http.dag` `redfish.Http` declared `GetManager` twice: a `/redfish/v1/Managers/{manager_id}` read added for the Mt. Jade first contact (gunbc#11758), and a fixed `/redfish/v1/Managers/bmc` read that `gunbc.fleet.fleet_health_observe` calls (gunbc#11681). v1 kept the later declaration, so the id form was dead by name from the day it landed. The source repair (still-swift-387's gen-two residue PR) deletes the fixed form and has its one consumer pass `manager_id: bmc`, leaving one operation with the id as a parameter.",
"FOUND BY: the first full gen-two census (srv1, gen-one `emit --entry v2.compiler.compile` over a combine including gunbc#12277), where v2's declaration-grade service lowering produced two identically labelled operation edges and the module refused. gunbc#12277 makes that refusal located at the second declaration under its own cause, `body_lowering_reason_service_operation_repeated`.",
"RUNG FOUND AT: mitigated on the v2 route (a located census refusal); SILENT on the v1 route, which is the harm. CEILING: structurally guaranteed -- no accepted program declares an operation name twice in one service. NEXT-RUNG TRIGGER, NAMING THE CAPABILITY: v1 refuses a service that declares an operation name twice, OR the v1 seed is retired so the v2 route is the only one that accepts service declarations; either makes every accepted service's operation names unique.",
],

evidence: [
DeclarationRef { module_path: "v2.test.claim.normalize.service_declaration_lowering", decl_name: "a_repeated_operation_name_refuses_located_RED", field: WholeDeclaration },
],
}