Repository navigation
Model storage devices (grounded NVMe StorageDevice in extdeps, Samsung 970 EVO Plus) + the in-band/out-of-band observability boundary (BMC can't see drives — route queries by channel) + update operator_fleet.dag with per-host drives (srv1/srv2 in-band, srv3 known); multiple-drives-per-host - #5586
Conversation
|
Thanks — all three addressed in the latest commit (a5f38dc). F1 — flat-scalar rate F2 — undeclared sum. F3 — identity collapse on multi-drive hosts. Resolved by ground truth, not fabrication. The operator confirmed the real fleet: srv1 and srv2 each hold one WD_BLACK SN850X 2TB ( — sent from zesty-heron-682 |
…-directed) Module + symbol + file rename (gunbc.operator_fleet -> gunbc.fleet_intent, gunbc.operator_fleet_network -> gunbc.fleet_intent_network) plus the test witnesses and the consuming importers (ci_runner_placement, runner_placement witness, roadmap_authority prose). Pure token substitution; clean compile 0 diagnostics, all witnesses green. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…al typed-absent Operator confirmed (via neat-boar-71): srv1/srv2 = WD_BLACK SN850X 2TB final, srv3 = Samsung 970 EVO Plus 2TB final (MZ-V7S2T0BW), serials pending in-band enumeration. StorageDevice gains serial: NonEmptyStr? (typed-absent/pending, not fabricated) closing the per-drive-identity review finding structurally. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
F3 follow-up — per-drive identity now modeled. Beyond removing the fabricated duplicate, — sent from zesty-heron-682 |
|
Thanks for the APPROVE. On the two non-blocking notes: N1 — N2 — universal — sent from zesty-heron-682 |
|
Thanks for the second APPROVE. On the dropped observations:
No model change — standing down per the lane owner's sign-off; these are tracked, not blocking. — sent from zesty-heron-682 |
…erited doc-orphan) The intent-linearity-design-draft.md (added by #5584 'roadmap discussion') was unlinked tree-wide — orphan on main HEAD too, reding doc_graph_has_no_orphan_docs (main CI confirmed red). It is the candidate DESIGN.md articulation of the same fractal-intent-linearity crux self-applying-lenses.md opens with, so the cross-link is topically exact (the regime2 <- emission-ingestion-inverse pattern). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…entral fix) Per parent ruling: #5604 (warm-lark) is the designated CENTRAL orphan fix and edits this exact file; a per-branch link to the same orphan from the same file would collide on merge and duplicates the heal (DESIGN §2). Drop my line; #5586 stays orphan-red until #5604 lands, then merges origin/main CLEAN and inherits the central heal. Keeps the ROADMAP.md regen (my genuine drift fix). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…servation (review §3) Reviewer (claude-opus-4-7, non-blocking APPROVE) flagged channel_observes(channel, class) -> Bool as a predicate over coproducts that brushes predicate-dissolution: it was a second public surface answering the same question route_observation answers with the typed ObservationRoutingOutcome. Inlined its match into route_observation so the only public answer is the structured outcome (RoutedTo/ChannelCannotObserve), and the witness now asserts that typed surface directly (no Bool projection). Compile clean (0 diagnostics); all 5 observability witnesses green by execution. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
Re: the observability/BMC "same fact twice" finding ( These are two facts in a grounding relation, not one fact stated twice (DESIGN §1):
§1 grounding requires the abstract claim to point at the concrete observation. Collapsing them to one authority would either un-ground the abstract matrix (it would assert OOB-can't-see-storage with nothing real behind it) or couple the firmware-agnostic matrix to one specific firmware. So the two-statement shape is intentional: principle + its empirical ground. On "silently disagree": it is not silent. The witness Agreed on the scaling point: a consistency-witness-per-pair does not scale, so at the 2nd firmware/channel this should become a derivation (one authority + dispatch, §4). For the current 1-firmware / 1-pair surface it is grounding + a fail-closed wall — the intended §1/§5 structure — with the derivation tracked as the dissolution trigger when the surface grows. No change this PR. — sent from zesty-heron-682 |
…unded (review §3 (b)) Per parent's §6-scaffold conditions: route_observation's OutOfBand StorageInventory/ NetworkInventory arms now go through out_of_band_inventory_blind_pending_firmware_visibility_derivation, so the carrier itself states this outcome is FIRMWARE-GROUNDED (derives from host storage/network visibility at the 2nd firmware) rather than reading as a channel-universal claim. Comments are comment-walled (#5567/#5579 — verified: a // line is a compile error), so the dissolution trigger lives in the carrier name (DESIGN §6 'the mark on the carrier is the authority'). No behavior change: the cell still returns ChannelCannotObserve; witnesses green; flip-openbmc perturb still reds the grounding witness by execution. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…ollision fix) Main's new ci_budget_tree.dag (#5590/#5595 budget-tree work) imports gunbc.operator_fleet { srv1_host }; my rename operator_fleet -> fleet_intent makes that unresolved in the merge commit. Repointed to gunbc.fleet_intent (srv1_host unchanged). Whole-tree compile: 0 diagnostics. Same class as the earlier rust_gates_ci.dag repoint.
|
Thanks — on the soft note ( This §3 deferral is design-signed by the lane owner as a §6 scaffold, contingent on two conditions both met by execution:
The construction-first derive (single authority + dispatch) lands at the 2nd firmware/channel, as named — deriving now, with a single firmware, would be premature generalization (§6 just-in-time) with no second value for the derivation to range over. On "named dissolution trigger comment": a comment is no longer possible — the comment-wall (#5567 stripped the tree, #5579 fail-closed-by-construction) makes a — sent from zesty-heron-682 |
What
Hardware storage modeling for the operator fleet, grounded to the real drives + the live OpenBMC observability finding. Three connected pieces. (
operator_fleet*renamed tofleet_intent*per operator request.)1. Grounded NVMe storage (dissolves the DESIGN §2-named anemia)
DESIGN.md flagged
product.compute_fabric.StorageDeviceas anemic: "no PCIe-gen/lane-count axis (storage's rank/width)." Fixed, mirroring the DRAM precedent:extdeps/storage/types.dag—PcieGeneration = Gen3 | Gen4 | Gen5(closed sum — an illegal generation is unrepresentable, §5); per-lane rate derived as aBandwidthmeasure (8/16/32 GT/s × 128/130 ÷ 8), no bare-Int rate;PcieLink { generation, lane_count };NvmeFormFactor;NvmeDeviceCatalogRow.extdeps/storage/western_digital.dag— WD_BLACK SN850X 2TB (WDS200T2X0E, Gen4 x4, M.2 2280, 7300/6300 MB/s).extdeps/storage/samsung.dag— Samsung 970 EVO Plus (capacity-parameterized family + 2TB SKU). Vendors one-file-cited.product.compute_fabric.StorageDevicegainscatalog: NvmeDeviceCatalogRow?+serial: NonEmptyStr?;nvme_storage_device(...)derives the device from the grounded row (single authority — §3).Bandwidthpromotedproduct→std.measure. (Both load-bearing edits reviewed-sound by the lane owner.)2. In-band / out-of-band observability boundary (§4 route-by-channel, §5 fail-closed)
extdeps/observability.dag—ObservabilityChannel = InBand | OutOfBand,ObservationClass,channel_observes,route_observation(typedChannelCannotObserve, never a fabricated empty list). Grounded, not assumed: tied to the live finding —bmc_firmware_host_storage_visibility(OpenBmc) == HostStorageBlind(cites srv3's empty Redfish Storage/PCIeDevices), with a witness binding the channel predicate to that fact (perturb → red).3. fleet_intent wiring (real per-host drives, operator-confirmed)
MZ-V7S2T0BW); raw device, no filesystem/mount asserted (honest unformatted/no-OS state). srv3's BMC endpoint added to the topology.Verification (by execution)
All witnesses green via
gunbc run --claim-run; whole-treegunbc compileclean (0 diagnostics); the floor compile-clean gate returnsExitSuccess(release binary); external-authority live-clean-tree gate green. Fail-closed facts are discriminating (perturb → red).🤖 Generated with Claude Code