Repository navigation
Model Mt. Jade / Wiwynn SV328R physical class facts - #11529
Conversation
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>
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>
|
review 67318 (
|
…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>
|
review 67326 (
|
…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>
|
review 67332 (
|
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>
|
review 67339 (
|
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>
|
Review 67349: both findings are in f15fe7d.
— 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>
|
Review 67355: both findings are in 3d77b4a.
— 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>
|
Review 67366: the finding is in 39f1ea9.
— 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>
|
Review 67376: the finding is in 86acd29.
— 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>
|
Review 67396: both findings are in 28906a9.
— sent from proud-owl-749 |
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
left a comment
There was a problem hiding this comment.
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 |
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
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.
|
|
||
| type ObservedEthernetLan { | ||
| binding: EthernetFunctionBinding | ||
| address: NonEmptyStr |
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
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 { |
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
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, |
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
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>
|
review 67559 against HEAD The finding was real.
— 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>
|
review 67579 against HEAD Both findings were real.
— 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>
|
review 67582 against HEAD The finding was real. The witness now matches those three authorities. The Collins brief still has its own — sent from proud-owl-749 |
…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>
…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>
…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>
|
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 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
msg.txt |
Summary
extdeps.ocp.mt_jade.platformwith cited 1U/2U fan connector sets, dual CRPS 1+1, rear RTL8211E BMC RJ45, and BMC firmware as MegaRAC or OpenBMC (not a default).extdeps.vendor.wiwynnandextdeps.wiwynn.sv328rfrom 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.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_witnessnew cells for fans, CRPS, BMC NIC, firmware disjunctiontest.claim.wiwynn_sv328r_witnesschassis/weight/power/memory cells