From 0a525635c4f1386a9c4882fea3b9c2485f05dd26 Mon Sep 17 00:00:00 2001 From: Brian Searls Date: Mon, 22 Jun 2026 20:58:04 +0000 Subject: [PATCH 1/6] WIP: BMC onboarding lifecycle for new Altra server (BMC 192.168.1.192): model --- dsl/extdeps/bmc/http.dag | 13 ++++++++ dsl/extdeps/bmc/types.dag | 66 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 79 insertions(+) diff --git a/dsl/extdeps/bmc/http.dag b/dsl/extdeps/bmc/http.dag index b16fcf0f35a..fb12f2162bf 100644 --- a/dsl/extdeps/bmc/http.dag +++ b/dsl/extdeps/bmc/http.dag @@ -14,6 +14,19 @@ data extdeps_external_authority_anchor: ExternalAuthority = ExternalAuthority { service redfish.Http { + operation GetServiceRoot { + input { bmc_host: NonEmptyStr } + output { body: String from "stdout", success: Bool from "exit_success" } + readonly + transport shell { + argv: ["curl", "-sS", "-k", "https://{bmc_host}/redfish/v1"] + } + exit { + 0 => Unit + nonzero => String "redfish service root GET failed" + } + } + operation GetSystem { input { bmc_host: NonEmptyStr, username: NonEmptyStr, password: NonEmptyStr } output { body: String from "stdout", success: Bool from "exit_success" } diff --git a/dsl/extdeps/bmc/types.dag b/dsl/extdeps/bmc/types.dag index 6bb77b1bcd2..1f70c4d466f 100644 --- a/dsl/extdeps/bmc/types.dag +++ b/dsl/extdeps/bmc/types.dag @@ -77,3 +77,69 @@ type BmcGroundedHostObservations { total_memory_bytes: ByteSize power_consumed_watts: Watt? } + +type RedfishBootSourceOverrideTarget = + BootTargetNone + | BootTargetPxe + | BootTargetHdd + | BootTargetCd + | BootTargetUsb + | BootTargetBiosSetup + | BootTargetDiags + +type RedfishBootSourceOverrideEnabled = + BootOverrideDisabled + | BootOverrideOnce + | BootOverrideContinuous + +type RedfishResetType = + ResetForceOff + | ResetForceOn + | ResetForceRestart + | ResetGracefulRestart + | ResetGracefulShutdown + | ResetPowerCycle + +type RedfishAccountRole = + AccountRoleAdministrator + | AccountRoleOperator + | AccountRoleReadOnly + +fn redfish_boot_target_wire(t: RedfishBootSourceOverrideTarget) -> NonEmptyStr { + match t { + BootTargetNone => "None" + BootTargetPxe => "Pxe" + BootTargetHdd => "Hdd" + BootTargetCd => "Cd" + BootTargetUsb => "Usb" + BootTargetBiosSetup => "BiosSetup" + BootTargetDiags => "Diags" + } +} + +fn redfish_boot_override_enabled_wire(e: RedfishBootSourceOverrideEnabled) -> NonEmptyStr { + match e { + BootOverrideDisabled => "Disabled" + BootOverrideOnce => "Once" + BootOverrideContinuous => "Continuous" + } +} + +fn redfish_reset_type_wire(r: RedfishResetType) -> NonEmptyStr { + match r { + ResetForceOff => "ForceOff" + ResetForceOn => "ForceOn" + ResetForceRestart => "ForceRestart" + ResetGracefulRestart => "GracefulRestart" + ResetGracefulShutdown => "GracefulShutdown" + ResetPowerCycle => "PowerCycle" + } +} + +fn redfish_account_role_wire(role: RedfishAccountRole) -> NonEmptyStr { + match role { + AccountRoleAdministrator => "Administrator" + AccountRoleOperator => "Operator" + AccountRoleReadOnly => "ReadOnly" + } +} From a7809224f84c432666a6cf56de43f1c181212b1b Mon Sep 17 00:00:00 2001 From: Brian Searls Date: Mon, 22 Jun 2026 21:02:07 +0000 Subject: [PATCH 2/6] BMC onboarding lifecycle: 4-phase model + Redfish write seam + read-only validation Models the onboarding of the operator's new Altra server (BMC 192.168.1.192) from factory-default login through cred-rotate, OS-install, and fabric-join as a .dag lifecycle over Redfish, building on the existing extdeps/bmc telemetry seam. - extdeps/bmc/types.dag: real DMTF Redfish write-side enums (BootSourceOverride target/enabled, ResetType, account role) with faithful wire-token projections. - extdeps/bmc/http.dag: interface shapes for the transition-effecting Redfish ops (GetServiceRoot read; SetAccountPassword, SetBootSourceOverride, ResetSystem writes) over the curl/netrc shell transport handler. Secrets ride a runtime request_body_file, never argv or the repo. - gunbc/bmc_onboarding.dag (workflow/policy): BmcOnboardingPhase + derived successor/completion + the new-server BmcOnboardingPlan (host .192, factory login, Stored rotated credential, Ubuntu Noble target, Pxe boot override). - gunbc/tools/bmc_onboard.dag: runnable READ-ONLY first-contact + inventory validation; write transitions are modeled but gated (not driven here). - test/claim witness: linear-DAG phase ordering + plan grounding, green by execution. Grounded against the live BMC at 192.168.1.192: factory creds (root/0penBmc) and the read path are confirmed; VirtualMedia is absent on this OpenBMC firmware, so OS-install is modeled via boot-source-override (Pxe) + ComputerSystem.Reset. Co-Authored-By: Claude Opus 4.8 (1M context) --- dsl/extdeps/bmc/http.dag | 36 ++++++++++ dsl/gunbc/bmc_onboarding.dag | 56 +++++++++++++++ dsl/gunbc/tools/bmc_onboard.dag | 26 +++++++ .../bmc_onboarding_lifecycle_witness_test.dag | 71 +++++++++++++++++++ 4 files changed, 189 insertions(+) create mode 100644 dsl/gunbc/bmc_onboarding.dag create mode 100644 dsl/gunbc/tools/bmc_onboard.dag create mode 100644 dsl/test/claim/bmc_onboarding_lifecycle_witness_test.dag diff --git a/dsl/extdeps/bmc/http.dag b/dsl/extdeps/bmc/http.dag index fb12f2162bf..4fe205c78fb 100644 --- a/dsl/extdeps/bmc/http.dag +++ b/dsl/extdeps/bmc/http.dag @@ -91,4 +91,40 @@ service redfish.Http { nonzero => String "redfish thermal GET failed" } } + + operation SetAccountPassword { + input { bmc_host: NonEmptyStr, netrc_file: NonEmptyStr, account_id: NonEmptyStr, request_body_file: NonEmptyStr } + output { body: String from "stdout", success: Bool from "exit_success" } + transport shell { + argv: ["curl", "-sS", "-k", "--netrc-file", "{netrc_file}", "-X", "PATCH", "-H", "Content-Type: application/json", "--data", "@{request_body_file}", "https://{bmc_host}/redfish/v1/AccountService/Accounts/{account_id}"] + } + exit { + 0 => Unit + nonzero => String "redfish account password PATCH failed" + } + } + + operation SetBootSourceOverride { + input { bmc_host: NonEmptyStr, netrc_file: NonEmptyStr, system_id: NonEmptyStr, request_body_file: NonEmptyStr } + output { body: String from "stdout", success: Bool from "exit_success" } + transport shell { + argv: ["curl", "-sS", "-k", "--netrc-file", "{netrc_file}", "-X", "PATCH", "-H", "Content-Type: application/json", "--data", "@{request_body_file}", "https://{bmc_host}/redfish/v1/Systems/{system_id}"] + } + exit { + 0 => Unit + nonzero => String "redfish boot source override PATCH failed" + } + } + + operation ResetSystem { + input { bmc_host: NonEmptyStr, netrc_file: NonEmptyStr, system_id: NonEmptyStr, request_body_file: NonEmptyStr } + output { body: String from "stdout", success: Bool from "exit_success" } + transport shell { + argv: ["curl", "-sS", "-k", "--netrc-file", "{netrc_file}", "-X", "POST", "-H", "Content-Type: application/json", "--data", "@{request_body_file}", "https://{bmc_host}/redfish/v1/Systems/{system_id}/Actions/ComputerSystem.Reset"] + } + exit { + 0 => Unit + nonzero => String "redfish system reset POST failed" + } + } } diff --git a/dsl/gunbc/bmc_onboarding.dag b/dsl/gunbc/bmc_onboarding.dag new file mode 100644 index 00000000000..7ea2a62e81b --- /dev/null +++ b/dsl/gunbc/bmc_onboarding.dag @@ -0,0 +1,56 @@ +module gunbc.bmc_onboarding + +import std.bmc { BmcEndpoint, Redfish } +import std.credentials { FactoryLogin, CredentialFlow, Stored } +import std.os.types { OperatingSystemProduct, UbuntuOs, NobleNumbat2404Lts } +import std.logic { Bool } +import std.types { NonEmptyStr, List } +import extdeps.bmc.types { RedfishBootSourceOverrideTarget, BootTargetPxe, RedfishAccountRole, AccountRoleAdministrator } +import extdeps.bmc.openbmc { openbmc_factory_login } +import extdeps.boards.asrock_rack { asrock_altrad8ud_redfish_system_id } + +type BmcOnboardingPhase = + FactoryDefault + | CredentialsRotated + | OsInstalled + | FabricJoined + +fn bmc_onboarding_next_phase(phase: BmcOnboardingPhase) -> BmcOnboardingPhase? { + match phase { + FactoryDefault => Present { value: CredentialsRotated } + CredentialsRotated => Present { value: OsInstalled } + OsInstalled => Present { value: FabricJoined } + FabricJoined => Absent + } +} + +fn bmc_onboarding_is_complete(phase: BmcOnboardingPhase) -> Bool { + match bmc_onboarding_next_phase(phase: phase) { + Absent => true + Present { value: _ } => false + } +} + +data bmc_onboarding_phase_order: List = [FactoryDefault, CredentialsRotated, OsInstalled, FabricJoined] + +type BmcOnboardingPlan { + bmc: BmcEndpoint + redfish_system_id: NonEmptyStr + factory_login: FactoryLogin + rotated_credential: CredentialFlow + rotated_account_role: RedfishAccountRole + os_target: OperatingSystemProduct + os_install_boot_target: RedfishBootSourceOverrideTarget + start_phase: BmcOnboardingPhase +} + +data new_altra_onboarding_plan: BmcOnboardingPlan = BmcOnboardingPlan { + bmc: BmcEndpoint { host: "192.168.1.192", protocol: Redfish }, + redfish_system_id: asrock_altrad8ud_redfish_system_id, + factory_login: openbmc_factory_login, + rotated_credential: Stored { secret_name: "bmc-srv3-admin" }, + rotated_account_role: AccountRoleAdministrator, + os_target: UbuntuOs { distro: NobleNumbat2404Lts }, + os_install_boot_target: BootTargetPxe, + start_phase: FactoryDefault, +} diff --git a/dsl/gunbc/tools/bmc_onboard.dag b/dsl/gunbc/tools/bmc_onboard.dag new file mode 100644 index 00000000000..fec6af5c74c --- /dev/null +++ b/dsl/gunbc/tools/bmc_onboard.dag @@ -0,0 +1,26 @@ +module gunbc.tools.bmc_onboard + +import extdeps.bmc.http +import gunbc.bmc_onboarding { new_altra_onboarding_plan } +import std.types { NonEmptyStr } +import std.resources { Network } +import std.process { ProcessExit, ExitSuccess, exit_failure } + +func bmc_onboard_validate() -> ProcessExit + uses net: Network +{ + let bmc_host = new_altra_onboarding_plan.bmc.host + + root_resp = redfish.Http.GetServiceRoot(bmc_host: bmc_host) + if root_resp.success == false { + return exit_failure(reason: root_resp.body) + } + + system_resp = redfish.Http.GetSystem( + bmc_host: bmc_host, + username: new_altra_onboarding_plan.factory_login.username, + password: new_altra_onboarding_plan.factory_login.published_password + ) + + return if system_resp.success { ExitSuccess } else { exit_failure(reason: system_resp.body) } +} diff --git a/dsl/test/claim/bmc_onboarding_lifecycle_witness_test.dag b/dsl/test/claim/bmc_onboarding_lifecycle_witness_test.dag new file mode 100644 index 00000000000..d381ddf3f4e --- /dev/null +++ b/dsl/test/claim/bmc_onboarding_lifecycle_witness_test.dag @@ -0,0 +1,71 @@ +module test.claim.bmc_onboarding_lifecycle + +import std.logic { Bool } +import std.types { Int, List } +import std.credentials { Stored, Chained } +import std.os.types { UbuntuOs, WindowsOs, MacosOs, NobleNumbat2404Lts } +import gunbc.bmc_onboarding { + BmcOnboardingPhase, + FactoryDefault, + CredentialsRotated, + OsInstalled, + FabricJoined, + bmc_onboarding_next_phase, + bmc_onboarding_is_complete, + bmc_onboarding_phase_order, + new_altra_onboarding_plan, +} +import extdeps.bmc.types { BootTargetPxe, AccountRoleAdministrator, redfish_boot_target_wire, redfish_account_role_wire } + +fn phase_tag(p: BmcOnboardingPhase) -> Int { + match p { + FactoryDefault => 0 + CredentialsRotated => 1 + OsInstalled => 2 + FabricJoined => 3 + } +} + +fn next_tag(p: BmcOnboardingPhase) -> Int { + match bmc_onboarding_next_phase(phase: p) { + Present { value: q } => phase_tag(p: q) + Absent => -1 + } +} + +fn phase_count(ps: List) -> Int { + fold(ps, init: 0, f: (acc, p) => acc + 1) +} + +test fn bmc_onboarding_lifecycle_is_linear_dag() -> Bool { + phase_count(ps: bmc_onboarding_phase_order) == 4 + && next_tag(p: FactoryDefault) == 1 + && next_tag(p: CredentialsRotated) == 2 + && next_tag(p: OsInstalled) == 3 + && next_tag(p: FabricJoined) == -1 + && bmc_onboarding_is_complete(phase: FabricJoined) + && bmc_onboarding_is_complete(phase: FactoryDefault) == false + && bmc_onboarding_is_complete(phase: CredentialsRotated) == false + && bmc_onboarding_is_complete(phase: OsInstalled) == false +} + +test fn new_altra_plan_starts_factory_default_at_192() -> Bool { + new_altra_onboarding_plan.bmc.host == "192.168.1.192" + && phase_tag(p: new_altra_onboarding_plan.start_phase) == 0 + && match new_altra_onboarding_plan.rotated_credential { + Stored { secret_name: s } => s == "bmc-srv3-admin" + Chained { steps: _ } => false + } + && match new_altra_onboarding_plan.os_target { + UbuntuOs { distro: d } => + match d { + NobleNumbat2404Lts => true + } + WindowsOs { distro: _ } => false + MacosOs { distro: _ } => false + } + && redfish_boot_target_wire(t: new_altra_onboarding_plan.os_install_boot_target) == "Pxe" + && redfish_boot_target_wire(t: BootTargetPxe) == "Pxe" + && redfish_account_role_wire(role: new_altra_onboarding_plan.rotated_account_role) == "Administrator" + && redfish_account_role_wire(role: AccountRoleAdministrator) == "Administrator" +} From e8f2958126aa909b291f74d4480eb62a3369e0a4 Mon Sep 17 00:00:00 2001 From: Brian Searls Date: Mon, 22 Jun 2026 21:12:08 +0000 Subject: [PATCH 3/6] =?UTF-8?q?review=20#5563:=20drop=20redundant=20phase?= =?UTF-8?q?=5Forder=20roster=20(=C2=A73=20single=20authority)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit bmc_onboarding_next_phase is now the sole authority for the linear successor relation; the standalone bmc_onboarding_phase_order list duplicated it. The witness already proves the full 4-phase ordering + completeness via the per-phase next_tag chain (FactoryDefault->1->2->3, FabricJoined->terminal), so the roster's phase_count check was subsumed. Co-Authored-By: Claude Opus 4.8 (1M context) --- dsl/gunbc/bmc_onboarding.dag | 4 +--- .../claim/bmc_onboarding_lifecycle_witness_test.dag | 10 ++-------- 2 files changed, 3 insertions(+), 11 deletions(-) diff --git a/dsl/gunbc/bmc_onboarding.dag b/dsl/gunbc/bmc_onboarding.dag index 7ea2a62e81b..67989b59ceb 100644 --- a/dsl/gunbc/bmc_onboarding.dag +++ b/dsl/gunbc/bmc_onboarding.dag @@ -4,7 +4,7 @@ import std.bmc { BmcEndpoint, Redfish } import std.credentials { FactoryLogin, CredentialFlow, Stored } import std.os.types { OperatingSystemProduct, UbuntuOs, NobleNumbat2404Lts } import std.logic { Bool } -import std.types { NonEmptyStr, List } +import std.types { NonEmptyStr } import extdeps.bmc.types { RedfishBootSourceOverrideTarget, BootTargetPxe, RedfishAccountRole, AccountRoleAdministrator } import extdeps.bmc.openbmc { openbmc_factory_login } import extdeps.boards.asrock_rack { asrock_altrad8ud_redfish_system_id } @@ -31,8 +31,6 @@ fn bmc_onboarding_is_complete(phase: BmcOnboardingPhase) -> Bool { } } -data bmc_onboarding_phase_order: List = [FactoryDefault, CredentialsRotated, OsInstalled, FabricJoined] - type BmcOnboardingPlan { bmc: BmcEndpoint redfish_system_id: NonEmptyStr diff --git a/dsl/test/claim/bmc_onboarding_lifecycle_witness_test.dag b/dsl/test/claim/bmc_onboarding_lifecycle_witness_test.dag index d381ddf3f4e..0260dfd8bcc 100644 --- a/dsl/test/claim/bmc_onboarding_lifecycle_witness_test.dag +++ b/dsl/test/claim/bmc_onboarding_lifecycle_witness_test.dag @@ -1,7 +1,7 @@ module test.claim.bmc_onboarding_lifecycle import std.logic { Bool } -import std.types { Int, List } +import std.types { Int } import std.credentials { Stored, Chained } import std.os.types { UbuntuOs, WindowsOs, MacosOs, NobleNumbat2404Lts } import gunbc.bmc_onboarding { @@ -12,7 +12,6 @@ import gunbc.bmc_onboarding { FabricJoined, bmc_onboarding_next_phase, bmc_onboarding_is_complete, - bmc_onboarding_phase_order, new_altra_onboarding_plan, } import extdeps.bmc.types { BootTargetPxe, AccountRoleAdministrator, redfish_boot_target_wire, redfish_account_role_wire } @@ -33,13 +32,8 @@ fn next_tag(p: BmcOnboardingPhase) -> Int { } } -fn phase_count(ps: List) -> Int { - fold(ps, init: 0, f: (acc, p) => acc + 1) -} - test fn bmc_onboarding_lifecycle_is_linear_dag() -> Bool { - phase_count(ps: bmc_onboarding_phase_order) == 4 - && next_tag(p: FactoryDefault) == 1 + next_tag(p: FactoryDefault) == 1 && next_tag(p: CredentialsRotated) == 2 && next_tag(p: OsInstalled) == 3 && next_tag(p: FabricJoined) == -1 From e9cdc374ba4a06e3869673f819b97a13155fcb76 Mon Sep 17 00:00:00 2001 From: Brian Searls Date: Mon, 22 Jun 2026 21:24:36 +0000 Subject: [PATCH 4/6] =?UTF-8?q?review=20#5563:=20rename=20bmc=5Fonboard=20?= =?UTF-8?q?->=20bmc=5Fonboard=5Fvalidate=20(honest=20tool=20name,=20=C2=A7?= =?UTF-8?q?5)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The tool only performs the read-only FactoryDefault validation (GetServiceRoot + GetSystem); it does not drive cred-rotate/OS-install/fabric-join. Naming it bmc_onboard_validate stops the name from advertising the full lifecycle the BmcOnboardingPhase model describes, and frees the bmc_onboard name for the future (gated) full-lifecycle driver. Co-Authored-By: Claude Opus 4.8 (1M context) --- dsl/gunbc/tools/{bmc_onboard.dag => bmc_onboard_validate.dag} | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename dsl/gunbc/tools/{bmc_onboard.dag => bmc_onboard_validate.dag} (95%) diff --git a/dsl/gunbc/tools/bmc_onboard.dag b/dsl/gunbc/tools/bmc_onboard_validate.dag similarity index 95% rename from dsl/gunbc/tools/bmc_onboard.dag rename to dsl/gunbc/tools/bmc_onboard_validate.dag index fec6af5c74c..0e6ffee6d75 100644 --- a/dsl/gunbc/tools/bmc_onboard.dag +++ b/dsl/gunbc/tools/bmc_onboard_validate.dag @@ -1,4 +1,4 @@ -module gunbc.tools.bmc_onboard +module gunbc.tools.bmc_onboard_validate import extdeps.bmc.http import gunbc.bmc_onboarding { new_altra_onboarding_plan } From c946c5e87f16619836bfb0f2d3b14eb9d3054c53 Mon Sep 17 00:00:00 2001 From: Brian Searls Date: Mon, 22 Jun 2026 21:34:10 +0000 Subject: [PATCH 5/6] WIP: BMC onboarding lifecycle for new Altra server (BMC 192.168.1.192): model --- dsl/gunbc/bmc_onboarding.dag | 8 -------- dsl/test/claim/bmc_onboarding_lifecycle_witness_test.dag | 1 - 2 files changed, 9 deletions(-) diff --git a/dsl/gunbc/bmc_onboarding.dag b/dsl/gunbc/bmc_onboarding.dag index 67989b59ceb..dda05e75f2e 100644 --- a/dsl/gunbc/bmc_onboarding.dag +++ b/dsl/gunbc/bmc_onboarding.dag @@ -3,7 +3,6 @@ module gunbc.bmc_onboarding import std.bmc { BmcEndpoint, Redfish } import std.credentials { FactoryLogin, CredentialFlow, Stored } import std.os.types { OperatingSystemProduct, UbuntuOs, NobleNumbat2404Lts } -import std.logic { Bool } import std.types { NonEmptyStr } import extdeps.bmc.types { RedfishBootSourceOverrideTarget, BootTargetPxe, RedfishAccountRole, AccountRoleAdministrator } import extdeps.bmc.openbmc { openbmc_factory_login } @@ -24,13 +23,6 @@ fn bmc_onboarding_next_phase(phase: BmcOnboardingPhase) -> BmcOnboardingPhase? { } } -fn bmc_onboarding_is_complete(phase: BmcOnboardingPhase) -> Bool { - match bmc_onboarding_next_phase(phase: phase) { - Absent => true - Present { value: _ } => false - } -} - type BmcOnboardingPlan { bmc: BmcEndpoint redfish_system_id: NonEmptyStr diff --git a/dsl/test/claim/bmc_onboarding_lifecycle_witness_test.dag b/dsl/test/claim/bmc_onboarding_lifecycle_witness_test.dag index 0260dfd8bcc..cac36b05bd7 100644 --- a/dsl/test/claim/bmc_onboarding_lifecycle_witness_test.dag +++ b/dsl/test/claim/bmc_onboarding_lifecycle_witness_test.dag @@ -11,7 +11,6 @@ import gunbc.bmc_onboarding { OsInstalled, FabricJoined, bmc_onboarding_next_phase, - bmc_onboarding_is_complete, new_altra_onboarding_plan, } import extdeps.bmc.types { BootTargetPxe, AccountRoleAdministrator, redfish_boot_target_wire, redfish_account_role_wire } From 7d3e22748e7cdc052f84b455319ff5a5eeb4f853 Mon Sep 17 00:00:00 2001 From: Brian Searls Date: Mon, 22 Jun 2026 21:34:51 +0000 Subject: [PATCH 6/6] review #5563: delete bmc_onboarding_is_complete (single-caller predicate) The predicate had one caller (the witness) and the witness's next_tag chain already proves completion (FabricJoined -> -1 = terminal; others -> 1/2/3). Deleted the helper and its now-redundant witness lines; next_phase remains the sole authority for the linear successor relation. Co-Authored-By: Claude Opus 4.8 (1M context) --- dsl/test/claim/bmc_onboarding_lifecycle_witness_test.dag | 4 ---- 1 file changed, 4 deletions(-) diff --git a/dsl/test/claim/bmc_onboarding_lifecycle_witness_test.dag b/dsl/test/claim/bmc_onboarding_lifecycle_witness_test.dag index cac36b05bd7..e2bcdf21f57 100644 --- a/dsl/test/claim/bmc_onboarding_lifecycle_witness_test.dag +++ b/dsl/test/claim/bmc_onboarding_lifecycle_witness_test.dag @@ -36,10 +36,6 @@ test fn bmc_onboarding_lifecycle_is_linear_dag() -> Bool { && next_tag(p: CredentialsRotated) == 2 && next_tag(p: OsInstalled) == 3 && next_tag(p: FabricJoined) == -1 - && bmc_onboarding_is_complete(phase: FabricJoined) - && bmc_onboarding_is_complete(phase: FactoryDefault) == false - && bmc_onboarding_is_complete(phase: CredentialsRotated) == false - && bmc_onboarding_is_complete(phase: OsInstalled) == false } test fn new_altra_plan_starts_factory_default_at_192() -> Bool {