Skip to content

Model Mt. Jade / Wiwynn SV328R physical class facts - #11529

Merged
briansrls merged 23 commits into
mainfrom
session/proud-owl-749
Sep 20, 2026
Merged

briansrls merged 23 commits into
mainfrom
session/proud-owl-749

Conversation

@gunbai-bot

@gunbai-bot gunbai-bot Bot commented Sep 17, 2026 •

Copy link
Copy Markdown
Contributor

Summary

  • Extend extdeps.ocp.mt_jade.platform with cited 1U/2U fan connector sets, dual CRPS 1+1, rear RTL8211E BMC RJ45, and BMC firmware as MegaRAC or OpenBMC (not a default).
  • Add extdeps.vendor.wiwynn and extdeps.wiwynn.sv328r from the 2021-11-04 datasheet: 2U 87×438×770.2 mm, 14.47 kg, six 6056 fans, 32 RDIMM slots, dedicated 1 GbE BMC, OCP NIC 3.0 SFF slot.
  • CRPS AC inlet (C14 vs C20, 120 V vs 200–240 V) and the shipped cord remain InletUnstatedInCitedAuthorities. Do not power a unit from this model.

Class plan lives in gunb-ai/gunbc-private#144 (buy list, arrival gates, Collins transfer census).

Test plan

  • test.claim.mt_jade_platform_witness new cells for fans, CRPS, BMC NIC, firmware disjunction
  • test.claim.wiwynn_sv328r_witness chassis/weight/power/memory cells
  • CI required lanes on this PR

Keep CRPS inlet and shipped-cord voltage unstated until a unit photograph or PSU OPN names IEC 60320 and the AC range. Cite BMC firmware as MegaRAC or OpenBMC, not a default.

Co-authored-by: Cursor <cursoragent@cursor.com>
@gunbai-bot gunbai-bot Bot changed the title mtjade onboard Model Mt. Jade / Wiwynn SV328R physical class facts Sep 17, 2026
@gunbai-bot
gunbai-bot Bot marked this pull request as ready for review September 17, 2026 18:27
gunbc-ci-auto-heal and others added 2 commits September 17, 2026 18:42
AmpereMtJade is a baseboard arm, not a catalog row that would force a BMC family. Physical Ethernet ports and PSU standing are shared intake types so a dual-RJ45 host module plus dedicated BMC jack is not a dedicated-management Bool, and two installed supplies are not redundancy.

Co-authored-by: Cursor <cursoragent@cursor.com>
PowerSupplyStanding now uses Watt and RPM. Collins BMC LANs inhabit PhysicalEthernetPort instead of a dedicated-management Bool. BMC firmware membership is one fold. The Jade identity note is an annotation, not a String row.

Co-authored-by: Cursor <cursoragent@cursor.com>
@gunbai-bot

gunbai-bot Bot commented Sep 17, 2026

Copy link
Copy Markdown
Contributor Author

review 67318 (/api/reviews/67318/artifacts/stdout.log) — addressed on 1ac6fe4488a:

  • PowerSupplyStanding.output / fan_speed are Watt and RevolutionsPerMinute.
  • ampere_mt_jade_identity_note deleted; the same text is a // on BaseboardModel, with a named later consumer (private strategy.mt_jade_* after this lands).
  • Collins BMC LANs now inhabit PhysicalEthernetPort / EthernetFunctionBinding; mtcollins1_bmc_interfaces_are_distinct_ports is the executing consumer.
  • BMC firmware membership is mt_jade_cited_bmc_firmware_options_include; ethernet function equality is ==.

…s strings.

The controller shape lives in the nic-attachment hub. Fan frames are millimetres and chassis height is RackUnit. Distinct-port standing compares panel labels so it can go red.

Co-authored-by: Cursor <cursoragent@cursor.com>
@gunbai-bot

gunbai-bot Bot commented Sep 17, 2026

Copy link
Copy Markdown
Contributor Author

review 67326 (/api/reviews/67326/artifacts/stdout.log) — addressed on aba1d1c4cef:

  • OnboardNetworkController lives in extdeps.standards.nic_attachment; Collins 1U, SV328R, and Mt. Jade BMC manageability import it.
  • Fan chassis height is RackUnit; 6056/4056 are Millimeter frame width × thickness.
  • BMC media is Bandwidth on that shared controller row.
  • Distinct-port standing uses ethernet_ports_are_distinct on panel labels (can go red). Same-port/same-function is the red control for the multi-function helper.
  • Dropped the coproduct-constructor-inequality witness; inlet matches now require the owed C14 vs C20 obligation text.

…N as dedicated.

CRPS inlet standing is TranscribedUncited. The Collins second controller address is FunctionUnobserved, with address and MAC joined on ObservedEthernetLan.

Co-authored-by: Cursor <cursoragent@cursor.com>
@gunbai-bot

gunbai-bot Bot commented Sep 17, 2026

Copy link
Copy Markdown
Contributor Author

review 67332 (/api/reviews/67332/artifacts/stdout.log) — addressed on cfb1deaa950:

  • CRPS AC inlet standing is CitedFigureStanding / TranscribedUncited in both SV328R and Mt. Jade. The duplicated one-arm InletUnstatedInCitedAuthorities types are gone.
  • The Collins second BMC LAN is FunctionUnobserved, not a second BmcDedicated.
  • Address and MAC sit on ObservedEthernetLan with the binding; the four unread string rows are gone.

Identity stays on the OCP and Wiwynn modules. Adding a board must not edit the generic product enum.

Co-authored-by: Cursor <cursoragent@cursor.com>
@gunbai-bot

gunbai-bot Bot commented Sep 17, 2026

Copy link
Copy Markdown
Contributor Author

review 67339 (/api/reviews/67339/artifacts/stdout.log) — addressed on 1bc568e38e7:

  • Dropped AmpereMtJade from BaseboardModel. Mt. Jade identity stays on extdeps.ocp.mt_jade and the Wiwynn SV328R modules. Same standing as Mt. Mitchell: a board must not widen the generic product enum.

The SV328R datasheet does not name a PHY/MAC, so that field is an unstated identity with a read obligation rather than citation prose in the part slot. Fan connector_count is Nat so a negative count is unwritable.

Co-authored-by: Cursor <cursoragent@cursor.com>
@gunbai-bot

gunbai-bot Bot commented Sep 17, 2026

Copy link
Copy Markdown
Contributor Author

Review 67349: both findings are in f15fe7d.

  • SV328R BMC controller is no longer citation prose. OnboardControllerIdentity is NamedOnboardController { part } or OnboardControllerUnstated { read_obligation }. SV328R uses the unstated arm (datasheet names dedicated 1GbE + iKVM, not a PHY/MAC OPN). Collins i350/RTL8211E and Jade RTL8211E use the named arm.
  • MtJadeFanConnectorPopulation.connector_count is Nat, same grain as sv328r_cooling.fan_count.

— sent from proud-owl-749

A negative PSU count was writable on Mt. Jade while SV328R already used Nat. The SV328R OCP row was a one-arm coproduct of commentary; the sheet names OCP NIC 3.0 SFF and leaves occupancy unstated.

Co-authored-by: Cursor <cursoragent@cursor.com>
@gunbai-bot

gunbai-bot Bot commented Sep 17, 2026

Copy link
Copy Markdown
Contributor Author

Review 67355: both findings are in 3d77b4a.

  • MtJadeCrpsPower.psu_count is Nat, same grain as Sv328rPowerSupply.psu_count and fan connector_count.
  • Deleted Sv328rOcpSlotStanding / OcpNic30SffSlotPresent. The datasheet fact is sv328r_ocp_slot: NicAttachmentClass = OcpNic3 { physical_variant: Sff }. Unstated occupancy is sv328r_ocp_slot_occupancy: CitedFigureStanding = TranscribedUncited with a discriminator. The old occupancy sentence is a // annotation. The witness now matches SFF vs LFF (LFF is an authorable red) and occupancy standing (CitedToAuthority is an authorable red).

— sent from proud-owl-749

The network controller was a second RTL8211E literal in the same module. The BMC Ethernet PHY row is now a named declaration consumed by both the reference-part list and the onboard controller.

Co-authored-by: Cursor <cursoragent@cursor.com>
@gunbai-bot

gunbai-bot Bot commented Sep 17, 2026

Copy link
Copy Markdown
Contributor Author

Review 67366: the finding is in 39f1ea9.

mt_jade_bmc_ethernet_phy is now the single MtJadeReferencePartRow for BmcEthernetPhy. mt_jade_reference_parts includes that row; mt_jade_bmc_management_network.network.controller is NamedOnboardController { part: mt_jade_bmc_ethernet_phy.ordering_part_number }. The witness compares against the same field, not a second "RTL8211E" literal. Collins and SV328R still carry their own independently versioned controller identities.

— sent from proud-owl-749

EthernetAttachment now wraps NicAttachmentClass for expansion cards and keeps only onboard and unobserved observation arms, so the standard constructors keep one meaning.

Co-authored-by: Cursor <cursoragent@cursor.com>
@gunbai-bot

gunbai-bot Bot commented Sep 17, 2026

Copy link
Copy Markdown
Contributor Author

Review 67376: the finding is in 86acd29.

EthernetAttachment no longer remints PcieCem / OcpNic3. Expansion-card attachment is NicClass { class: NicAttachmentClass } wrapping extdeps.standards.nic_attachment. Observation arms stay BaseboardOnboard and AttachmentUnobserved. This PR's rows still use only those observation arms; the wrap is the vocabulary so a later unit observation can name a standard class without a meaning fork.

— sent from proud-owl-749

Jade's cited BMC stacks are the existing firmware-family arms, not a second two-arm enum. SV328R registered DIMMs use DimmBuffering like Mt. Mitchell.

Co-authored-by: Cursor <cursoragent@cursor.com>
@gunbai-bot

gunbai-bot Bot commented Sep 17, 2026

Copy link
Copy Markdown
Contributor Author

Review 67396: both findings are in 28906a9.

  • Deleted MtJadeCitedBmcFirmwareOption. mt_jade_cited_bmc_firmware_options is List<BmcFirmwareFamily> = [AmiMegaRac, OpenBmc]. The include helper takes that type. Still a cited disjunction, not a unit default.
  • Sv328rMemoryConfiguration.buffering is DimmBuffering = Registered, same authority as mt_mitchell_dimm_buffering. The "RDIMM" string leaf is gone.

— sent from proud-owl-749

gunbc-ci-auto-heal and others added 3 commits September 18, 2026 00:40
Required CI refused namespace-wave-admission on unadjudicated relocations of OnboardNetworkController and PowerSupplyStanding onto the shared homes.

Co-authored-by: Cursor <cursoragent@cursor.com>
Adding the six hoist rows edits the admission directory, which makes already-consumed rows due. The wall asked for those files to be removed from dag/gunbc/namespace/transition_admission/.

Co-authored-by: Cursor <cursoragent@cursor.com>
@briansrls
briansrls added this pull request to the merge queue Sep 18, 2026
@briansrls
briansrls removed this pull request from the merge queue due to a manual request Sep 18, 2026

@briansrls briansrls left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The class/specimen split, the refusal to choose a default BMC family, and the decision not to infer OCP-slot occupancy are all in the right direction. Required CI is green on this exact head. I am holding the shared extraction, though: as written it can silently join different physical machines, call one PSU twice “redundant,” and type a PHY as a controller. Those are structural false-positive paths in the very carriers the later Mt. Jade intake is meant to trust.

After the four inline findings are repaired, add discriminating controls for: same-label ports on different units, the same PSU row passed twice, two supplies on the same feed, and the exact firmware-option population. Also cover the authored dual_rotor fact for the 1U connector set; the current fan witness checks it only for 2U.

I found no separate blocker in the public Mt. Jade/Wiwynn class facts themselves beyond the PHY/controller join below. The large namespace-admission cleanup is wall-driven and the head is mergeable; the hold is on the new shared semantics, not on CI or generated state.

| AttachmentUnobserved { discriminator: NonEmptyStr }

type PhysicalEthernetPort {
panel_label: NonEmptyStr

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Blocking — the port has no machine identity. panel_label is a description, not a physical key. With this shape, two different machines that each have rear lower I/O row + RJ45 are treated as the same connector by ethernet_port_may_carry_multiple_functions, while ethernet_ports_are_distinct can collapse them. Bind the port to a stable unit/intake-attempt identity plus a structural port locator; retain the panel text as an observed label. The witness needs a same-label/different-unit red.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Addressed: port identity is now unit key + locator + attachment. Same panel labels on different UnitKeys are DistinctConnectors. Matching PortUnitUnobserved prose is PortUnitIdentityUnobserved (not SameUnit); ethernet_ports_are_distinct is false on that arm. Witness: w_same_panel_labels_on_different_units_are_distinct_ports and w_matching_unobserved_unit_prose_is_not_unit_identity.

Comment thread dag/gunbc/machine_intake/ethernet.dag Outdated

type ObservedEthernetLan {
binding: EthernetFunctionBinding
address: NonEmptyStr

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This shared carrier reintroduces anemic strings for two concepts that already have structural authorities: extdeps.network.ipv4.Ipv4Address and extdeps.network.mac.Eui48Address. Please carry a typed network-layer address standing (or explicit IPv4/IPv6 coproduct) and Eui48Address, and keep the currently assigned address distinct from permanent interface identity.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Addressed: ObservedEthernetLan carries Ipv4Address and EthernetLinkAddress (ConfiguredLink / PermanentAndConfigured over Eui48Address), not anemic strings.

fan_speed: RevolutionsPerMinute
}

fn power_supplies_redundant(a: PowerSupplyStanding, b: PowerSupplyStanding) -> Bool {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Blocking — this does not establish redundancy. It returns true for power_supplies_redundant(a: powered, b: powered), for rows from different machines, and for two supplies on one breaker/PDU feed; it ignores sensor_name, output, fan, unit, slot, and feed. At most this predicate currently proves “both arguments report AC present.” Either name it that narrowly, or carry subject + distinct supply identity + the relevant feed/health standing and require distinct admitted paths. Add same-row and same-feed reds.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Addressed: the fold is both_supplies_have_ac. It requires distinct sensor_name and both present with AC. Same-row is false. It does not claim feed redundancy.

data mt_jade_bmc_management_network: MtJadeBmcManagementNetwork = MtJadeBmcManagementNetwork {
network: OnboardNetworkController {
controller: NamedOnboardController { part: mt_jade_bmc_ethernet_phy.ordering_part_number },
port_count: 1,

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Blocking — this joins a PHY into a controller field. mt_jade_bmc_ethernet_phy is explicitly a MtJadeReferencePartRow whose role is BmcEthernetPhy; assigning its OPN to OnboardControllerIdentity asserts that RTL8211E is the controller. Keep the controller unstated unless the cited source names the MAC/controller, or split the shared carrier into controller/MAC and PHY identities and bind AST2500/RTL8211E to their actual roles.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Addressed: mt_jade_bmc_management_network.controller is OnboardControllerUnstated; RTL8211E is NamedOnboardPhy only. AST2500 stays on the BMC chip catalog row.

…oller.

both_supplies_have_ac requires distinct sensors and does not mint feed redundancy. OnboardNetworkController now has a PHY field; Jade/Collins BMC RTL8211E is that PHY. Ethernet ports are keyed by unit standing plus locator, and observed LANs use Ipv4Address and Eui48Address.

Co-authored-by: Cursor <cursoragent@cursor.com>
HostData versus FunctionUnobserved was answering that one connector carried two functions, and two unobserved rows compared by discriminator prose.

Co-authored-by: Cursor <cursoragent@cursor.com>
@gunbai-bot

gunbai-bot Bot commented Sep 18, 2026

Copy link
Copy Markdown
Contributor Author

review 67559 against HEAD 44a23cde59e:

The finding was real. ethernet_port_may_carry_multiple_functions compared EthernetFunction with ==, so HostData vs FunctionUnobserved answered true and two FunctionUnobserved rows compared by discriminator prose.

ethernet_function_identity now returns FunctionIdentityStanding (ObservedSameFunction / ObservedDistinctFunctions / FunctionIdentityUnobserved). Unobserved on either side is always the third arm; matching prose is not identity. The port fold returns ConnectorFunctionStanding rather than Bool. Discriminating RED: w_unobserved_function_is_not_a_second_function.

— sent from proud-owl-749

…328R Nat accessors.

Observed-function comparison was a 4x4 helper that reimplemented ==; weight and depth accessors existed only so the witness could restate gram_count and micrometer_count.

Co-authored-by: Cursor <cursoragent@cursor.com>
@gunbai-bot

gunbai-bot Bot commented Sep 18, 2026

Copy link
Copy Markdown
Contributor Author

review 67579 against HEAD 483096be9f6:

Both findings were real.

  1. ethernet_observed_function_against is gone. After either side is FunctionUnobserved, ethernet_function_identity uses structural == for the observed remainder. Unobserved-prose RED is unchanged (w_unobserved_function_is_not_a_second_function).

  2. Deleted sv328r_weight_grams and sv328r_depth_micrometers. Witnesses keep gram_count(g: sv328r_stated_weight) and micrometer_count(m: sv328r_dimensions.depth). Downstream private depth consumption should use that field, not a Nat stripper.

— sent from proud-owl-749

…tead of an architecture string.

The datasheet phrase packed three facts the corpus already owns; a SKU row is not implied.

Co-authored-by: Cursor <cursoragent@cursor.com>
@gunbai-bot

gunbai-bot Bot commented Sep 18, 2026

Copy link
Copy Markdown
Contributor Author

review 67582 against HEAD 8f4a3245bfa:

The finding was real. Sv328rProcessorConfiguration.architecture_label is gone. The row now carries vendor: ampere_vendor, altra_family_authority: ampere_altra_family_product_brief_authority, and architecture: Aarch64. It does not pin altra_q8030_catalog: the datasheet states an 80-core class and 3.0 GHz max, not a SKU.

The witness now matches those three authorities. The Collins brief still has its own architecture_label; that is outside this PR's SV328R class subject.

— sent from proud-owl-749

@briansrls
briansrls added this pull request to the merge queue Sep 18, 2026
@github-merge-queue
github-merge-queue Bot removed this pull request from the merge queue due to failed status checks Sep 18, 2026
@briansrls
briansrls added this pull request to the merge queue Sep 18, 2026
gunbai-bot Bot pushed a commit that referenced this pull request Sep 18, 2026
…7912/67931

The branch did not parse. dag/extdeps/bmc/http.dag carried a // block INSIDE the
service redfish.Http body, which DESIGN section 4c refuses: only module-item grain
is modeled, so all six lines were located parse refusals and the floor could not
build a declaration index (ArmSetConsumerPlanningUnavailable). main carries zero
comments inside that service block; this branch introduced the class. The note is
now hoisted above the service declaration, and says why it sits there so the next
author does not re-open it.

review 67912 / 67931 - the probe refusal carried no cause. ProbeServiceRoot binds
body from "stdout" and curl -sS writes its connect error to stderr, so on an
unreachable host stdout is the write-out alone ("\n000") and the tool refused with
that blob. The operation now also binds transport_stderr from "stderr";
HostUnreachable carries { cause, transport_stderr }, where cause is this module's
own located statement and transport_stderr is curl's text; the refusal joins them.
The witness fixture is the pair the transport really emits rather than curl prose
supplied as stdout, and both conjuncts are discriminating: refusing with the stdout
blob falsifies the first, dropping the stderr binding falsifies the second.

review 67931 - four Bool folds over closed coproducts whose only consumers were
witnesses are deleted. residence_refuses_unbounded_failsafe and
failsafe_window_closes_by_chassis_power_off restated the arm names; the witness now
matches the arms directly and keeps its RED, which never came from the helper but
from the second arm on each coproduct. jade_first_dpc_topology_is_one_dimm_per_channel
and jade_first_dpc_same_channel_mixing_is_engaged went the same way: the witness
already asserted jade_first_dpc_topology == OneDimmPerChannel on the line above, so
it now calls the canonical dimms_per_channel_count accessor directly.

review 67911 (completing 327018a) - gsg_rear_management_ethernet_names was the same
predicate-dissolution shape as the gsg_unstated_topic_eq that commit deleted. Gone,
and the BMC-ethernet conjunct uses that commit's row-identity pattern instead.
Dropping those conjuncts left mt_jade_gsg_inlet_connector_face, _chassis_weight and
_bmc_ethernet_phy with no consumer, so they are annotated as a declared coverage
frontier naming #11529 as the later consumer and the cited datasheet read as the
retiring trigger, per DESIGN section 3c.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
gunbai-bot Bot pushed a commit that referenced this pull request Sep 18, 2026
…l-copy witness

review 67954: the five STATED rows in chassis.dag were dangling exactly as the
GsgUnstated rows beside them had been before 327018a got the frontier treatment.
git grep returns the declaration and one witness whose entire content is the literals
copied back from the rows it reads - both sides from this tree, so automating the
update collapses it to measure() == measure() (DESIGN section 5). The figures ARE
grounded in the GSG Issue 1.00, digest f6528f70, but the ground is the DOCUMENT and
no claim here executes it; provenance is already claimed once by the citation-read
receipt rather than once per row.

A SIXTH ROW OF THE SAME CLASS that the review did not name is included:
mt_jade_gsg_without_1p_bmc_image_fan_duty, whose only reader was a
percent_count(...) == 100 conjunct on the fan-standing witness. Same shape, same
disposition, fixed together rather than left to a second round.

Consumers checked before declaring frontiers rather than after. The reviewer and the
parent lane both suggested minimum_bmc_firmware_family -> the first-contact family
standing; that consumer may NOT be written. bmc_first_contact_standing carries two
arms and deliberately no function from a document to an installed family (review
67792), so reading the GSG minimum as a stand-in for an observed family is the exact
fork that module exists to prevent. It and the fan-duty row are therefore blocked on
one trigger - a wet probe binding FamilyObserved - and the note says so. The other
four name #11529's carton, PSU and fan-capture folds with per-row retirement triggers.

The literal-copy witness is deleted rather than rewritten: there is no red available
to it that is not prose drift, and DESIGN is explicit that such a check is worse than
absent because it will be cited as coverage.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
gunbai-bot Bot pushed a commit that referenced this pull request Sep 18, 2026
…rows

review 67963: the per-row consumers and retiring triggers for nine rows lived only as
a // block. DESIGN section 4c is explicit that a dissolution condition belongs in a
typed carrier because no Accepted program can read an annotation, and the consequence
was concrete: nothing in the closure could read the trigger gating
minimum_bmc_firmware_family and without_1p_bmc_image_fan_duty, which the same note
called out as the rows a fan realizer must not consume before FamilyObserved. The
strongest binding on the module's most dangerous row was a comment.

CHECKING THE FINDING SURFACED A SECOND ONE THE REVIEW DID NOT MAKE, and it decides
where the carrier goes. The review points at std.disposition Scaffold as the available
typed form; that is the wrong carrier - these rows are not scaffolds that dissolve into
a construction, they are transcribed upstream figures waiting on a consumer, and
Disposition's two arms say neither. std.roster_frontier FrontierRow says exactly that:
subject, reason, dissolution. More importantly the coverage state may not live in the
extdeps module at all. DESIGN section 3 external upstream decomposition: an extdeps
module may not store consumer coverage state, and a missing observation is a coverage
obligation DOWNSTREAM. Whether this repository has built a consumer for a figure Ampere
printed is a fact about this repository, so the roster is a gunbc module referencing the
extdeps declarations by DeclarationRef.

EVERY ROW IS UNBOUND ON PURPOSE. std.dissolution's own note names the trap: binding
forward to a symbol nobody has declared is the section 3 fabricated-citation class. The
#11529 folds are on another branch and the wet-probe row does not exist, so neither is a
DeclarationRef this closure can name; dissolution_status reports DissolutionUnbound
rather than a promise, and the witness asserts that.

The witness is a real consumer with three authorable REDs: a malformed row fails
frontier_rows_well_formed, a subject outside the GSG chassis module fails the module-path
conjunct, and a dissolution bound forward to an unnameable symbol fails the unbound
conjunct.

Second half of the same finding: the roster-membership prohibition beside
mtjade1_bmc_gunbc_secret_ref ("converge would 404") is an operative rule with a live
failure mode carried as a comment, while JadeManagedBmcSecretStanding's only arm is
SecretLocusReservedNotOnAccessorRoster - the standing IS the refusal. The comment now
points at the typed form instead of re-spelling it.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@github-merge-queue
github-merge-queue Bot removed this pull request from the merge queue due to failed status checks Sep 18, 2026
@briansrls
briansrls added this pull request to the merge queue Sep 19, 2026
@github-merge-queue
github-merge-queue Bot removed this pull request from the merge queue due to failed status checks Sep 19, 2026
@briansrls
briansrls added this pull request to the merge queue Sep 19, 2026
@github-merge-queue
github-merge-queue Bot removed this pull request from the merge queue due to failed status checks Sep 19, 2026
@gunbai-bot

gunbai-bot Bot commented Sep 19, 2026

Copy link
Copy Markdown
Contributor Author

Transition-admission migration for gunbc#11704. No action until the operator sequences #11704's landing.

gunbc#11704 moves namespace transition admissions out of the tree. Once it lands, any file under dag/gunbc/namespace/transition_admission/ refuses at this PR's own gate, and the admission has to be carried in a commit message on this branch instead. The block below was derived mechanically from this PR's 5 row file(s) at its current head. The only edits: deletion_follow_up, owner_pull_request and their now-unused imports are dropped, because those fields no longer exist. All 5 blocks load through the production fold (carried_admissions_from_messages) with no refusal.

To migrate (paste + delete), after #11704 is on main and merged into this branch:

git rm \
  dag/gunbc/namespace/transition_admission/extdeps_ampere_mt_collins_1u_product_brief_specifications_mt_collins_1u_bmc_manageability_network_OnboardNetworkController.dag \
  dag/gunbc/namespace/transition_admission/extdeps_ampere_mt_collins_1u_product_brief_specifications_mt_collins_1u_onboard_data_network_OnboardNetworkController.dag \
  dag/gunbc/namespace/transition_admission/gunbc_machine_intake_mtcollins1_platform_observation_mtcollins1_psu1_standing_PowerSupplyStanding.dag \
  dag/gunbc/namespace/transition_admission/gunbc_machine_intake_mtcollins1_platform_observation_mtcollins1_psu2_if_corded_PowerSupplyStanding.dag \
  dag/gunbc/namespace/transition_admission/gunbc_machine_intake_mtcollins1_platform_observation_mtcollins1_psu2_standing_PowerSupplyStanding.dag
git commit -F msg.txt   # msg.txt = the text below, verbatim

-F keeps the lines exactly as they are. The squash merge carries the message into the queue run, and nothing lands in the tree. If a row is wrong later, a later block with the same stem supersedes it.

msg.txt
Move transition admissions into the commit message (gunbc#11704)

```transition-admission
module gunbc.namespace.transition_admission.extdeps_ampere_mt_collins_1u_product_brief_specifications_mt_collins_1u_bmc_manageability_network_OnboardNetworkController

import std.types { NonEmptyStr, List }
import std.decl_ref { decl_ref }
import gunbc.compiler_frontend_program_interlock { TargetChanged }
import gunbc.namespace.transition_admission { TransitionAdmission, Binding }

data extdeps_ampere_mt_collins_1u_product_brief_specifications_mt_collins_1u_bmc_manageability_network_OnboardNetworkController: TransitionAdmission = TransitionAdmission {
  label: "gunbc#11529 hoist OnboardNetworkController and PowerSupplyStanding onto shared homes" as NonEmptyStr,
  subject: Binding {
    enclosing: decl_ref("extdeps.ampere.mt_collins_1u_product_brief.specifications", "mt_collins_1u_bmc_manageability_network"),
    spelling: "OnboardNetworkController" as NonEmptyStr,
    expected_candidates: [decl_ref("extdeps.standards.nic_attachment", "OnboardNetworkController")],
  },
  disposition: TargetChanged,
}
```

```transition-admission
module gunbc.namespace.transition_admission.extdeps_ampere_mt_collins_1u_product_brief_specifications_mt_collins_1u_onboard_data_network_OnboardNetworkController

import std.types { NonEmptyStr, List }
import std.decl_ref { decl_ref }
import gunbc.compiler_frontend_program_interlock { TargetChanged }
import gunbc.namespace.transition_admission { TransitionAdmission, Binding }

data extdeps_ampere_mt_collins_1u_product_brief_specifications_mt_collins_1u_onboard_data_network_OnboardNetworkController: TransitionAdmission = TransitionAdmission {
  label: "gunbc#11529 hoist OnboardNetworkController and PowerSupplyStanding onto shared homes" as NonEmptyStr,
  subject: Binding {
    enclosing: decl_ref("extdeps.ampere.mt_collins_1u_product_brief.specifications", "mt_collins_1u_onboard_data_network"),
    spelling: "OnboardNetworkController" as NonEmptyStr,
    expected_candidates: [decl_ref("extdeps.standards.nic_attachment", "OnboardNetworkController")],
  },
  disposition: TargetChanged,
}
```

```transition-admission
module gunbc.namespace.transition_admission.gunbc_machine_intake_mtcollins1_platform_observation_mtcollins1_psu1_standing_PowerSupplyStanding

import std.types { NonEmptyStr, List }
import std.decl_ref { decl_ref }
import gunbc.compiler_frontend_program_interlock { TargetChanged }
import gunbc.namespace.transition_admission { TransitionAdmission, Binding }

data gunbc_machine_intake_mtcollins1_platform_observation_mtcollins1_psu1_standing_PowerSupplyStanding: TransitionAdmission = TransitionAdmission {
  label: "gunbc#11529 hoist OnboardNetworkController and PowerSupplyStanding onto shared homes" as NonEmptyStr,
  subject: Binding {
    enclosing: decl_ref("gunbc.machine_intake_mtcollins1_platform_observation", "mtcollins1_psu1_standing"),
    spelling: "PowerSupplyStanding" as NonEmptyStr,
    expected_candidates: [decl_ref("gunbc.machine_intake_power_supply", "PowerSupplyStanding")],
  },
  disposition: TargetChanged,
}
```

```transition-admission
module gunbc.namespace.transition_admission.gunbc_machine_intake_mtcollins1_platform_observation_mtcollins1_psu2_if_corded_PowerSupplyStanding

import std.types { NonEmptyStr, List }
import std.decl_ref { decl_ref }
import gunbc.compiler_frontend_program_interlock { TargetChanged }
import gunbc.namespace.transition_admission { TransitionAdmission, Binding }

data gunbc_machine_intake_mtcollins1_platform_observation_mtcollins1_psu2_if_corded_PowerSupplyStanding: TransitionAdmission = TransitionAdmission {
  label: "gunbc#11529 hoist OnboardNetworkController and PowerSupplyStanding onto shared homes" as NonEmptyStr,
  subject: Binding {
    enclosing: decl_ref("gunbc.machine_intake_mtcollins1_platform_observation", "mtcollins1_psu2_if_corded"),
    spelling: "PowerSupplyStanding" as NonEmptyStr,
    expected_candidates: [decl_ref("gunbc.machine_intake_power_supply", "PowerSupplyStanding")],
  },
  disposition: TargetChanged,
}
```

```transition-admission
module gunbc.namespace.transition_admission.gunbc_machine_intake_mtcollins1_platform_observation_mtcollins1_psu2_standing_PowerSupplyStanding

import std.types { NonEmptyStr, List }
import std.decl_ref { decl_ref }
import gunbc.compiler_frontend_program_interlock { TargetChanged }
import gunbc.namespace.transition_admission { TransitionAdmission, Binding }

data gunbc_machine_intake_mtcollins1_platform_observation_mtcollins1_psu2_standing_PowerSupplyStanding: TransitionAdmission = TransitionAdmission {
  label: "gunbc#11529 hoist OnboardNetworkController and PowerSupplyStanding onto shared homes" as NonEmptyStr,
  subject: Binding {
    enclosing: decl_ref("gunbc.machine_intake_mtcollins1_platform_observation", "mtcollins1_psu2_standing"),
    spelling: "PowerSupplyStanding" as NonEmptyStr,
    expected_candidates: [decl_ref("gunbc.machine_intake_power_supply", "PowerSupplyStanding")],
  },
  disposition: TargetChanged,
}
```

@briansrls
briansrls added this pull request to the merge queue Sep 19, 2026
@github-merge-queue
github-merge-queue Bot removed this pull request from the merge queue due to failed status checks Sep 19, 2026
@briansrls
briansrls added this pull request to the merge queue Sep 20, 2026
Merged via the queue into main with commit 348a2f7 Sep 20, 2026
4 checks passed
@briansrls
briansrls deleted the session/proud-owl-749 branch September 20, 2026 01:21
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