Skip to content

Model BMC firmware capability catalog + OS-install mechanism solve + srv3 boot-once-CD (structured Disposition) - #5765

Merged
briansrls merged 3 commits into
mainfrom
session/silent-moth-255
Jun 24, 2026
Merged

briansrls merged 3 commits into
mainfrom
session/silent-moth-255

Conversation

@briansrls

@briansrls briansrls commented Jun 24, 2026 •

Copy link
Copy Markdown
Contributor

Re-lands the content of #5748 and #5750 with structured std.disposition — Disposition::Scaffold { dissolves_to, bind } — instead of prose strings for scaffold markers.

What

extdeps/bmc/capability.dag (new)

BmcCapability closed coproduct (PowerControl | BootSourceOverride | AccountManagement | FirmwareUpdate | VirtualMedia | BiosAttributeConfig), BmcFirmwareVersion, BmcFirmwareCapabilityRow catalog type. One grounded row: openbmc_2_07_00_capabilities from a live Redfish probe of srv3's BMC (2026-06-24) — has Power/BootOverride/AccountManagement/FirmwareUpdate; lacks VirtualMedia (404) and BiosAttributeConfig.

§3 dissolution

Deleted RedfishVirtualMediaSupport from extdeps/bmc/types.dag and asrock_altrad8ud_virtual_media_support from extdeps/boards/asrock_rack.dag — these modeled VirtualMedia as a board property when it is a firmware property. Now it's capability membership: CapabilityVirtualMedia ∈ row.capabilities.

gunbc/os_install_mechanism.dag (new)

OsInstallMechanism = VirtualMediaInstall | PxeHttpInstall | FirmwareUpdateThenVirtualMedia + solve_install_mechanism(current, catalog). VirtualMediaInstall preferred; when absent but UpdateService present and catalog knows a VM-capable firmware → FirmwareUpdateThenVirtualMedia (firmware update as a capability-acquiring transition). srv3_install_mechanism solves to PxeHttpInstall today — add a VM-capable row → it flips with no edit to the solve.

gunbc/srv3_boot_once_cd.dag (new)

srv3_boot_once_cd(): stage netrc (factory creds) → PATCH /Systems/system Boot Target=Cd/Enabled=Once → POST ComputerSystem.Reset ForceRestart. Secret-on-disk scaffold marked with Disposition::Scaffold { dissolves_to: RealizationDispatch, bind: extdeps.filesystem.filesystem_io.Filesystem } — NOT prose strings.

Witnesses (green by local execution)

  • bmc_capability_solve_witness_test.dag (5 tests): capabilities grounded; catalog has no VM firmware today; srv3 → PXE today; VM-capable row flips to FirmwareUpdateThenVirtualMedia; node with VirtualMedia solves direct.
  • srv3_boot_once_cd_witness_test.dag (3 tests): boot-override body wires Cd/Once; reset body wires ForceRestart; wire labels grounded.
  • srv3_os_install_witness_test.dag: removed stale board-level virtual-media test (dissolved by capability model).

🤖 Generated with Claude Code

Brian Searls and others added 2 commits June 24, 2026 21:23
…ame expression line

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@gunbai-bot
gunbai-bot Bot marked this pull request as ready for review June 24, 2026 21:32
@gunbai-bot gunbai-bot Bot changed the title Re-land #5748 (BMC firmware capability catalog) + #5750 (srv3 boot-once-CD) with structured std.disposition, NOT prose-in-strings Model BMC firmware capability catalog + OS-install mechanism solve + srv3 boot-once-CD (structured Disposition) Jun 24, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant