Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
7f97876
"Cut off a provider" names two actions with different blast radii: gi…
Aug 23, 2026
dd9ba16
Four control arms reported an effect that never happened: the control…
Aug 23, 2026
e71cc3a
Put the fleet on the daily workspace: capacity at a glance, reading t…
Aug 23, 2026
c8799c9
A committed width cannot say what would buy more: name the binding ax…
Aug 23, 2026
aabc5c9
Two DIMM capacities wore one name and a module could not read its own…
Aug 23, 2026
7095169
Remove the scratch fixture this PR committed by accident: it has no h…
Aug 23, 2026
06aed44
Merge main: CPU became a third admission axis, and the binding-axis c…
Aug 23, 2026
9d64a46
Hoist a §4c-illegal annotation out of a match body: it refused the wh…
Aug 23, 2026
027ae2b
Runner slot membership becomes fleet-converge's third member family, …
Aug 23, 2026
467047a
Merge main (#8989 annotation hoist landed; this branch carried a cher…
Aug 23, 2026
e9778c3
The slot observation stops naming a host it cannot know
Aug 23, 2026
d84553d
Merge main (#8989 hoist) so this branch gets an honest run
Aug 23, 2026
7b6bf7e
Five width witnesses were change detectors: derive the out-of-range i…
Aug 23, 2026
842eb11
Merge main into fleet/capacity-control: pick up the §4c annotation ho…
Aug 23, 2026
b66c839
The fabric slot stops being a provisioning target
Aug 23, 2026
f32eff3
The converge plan passed a release where an arch-bound artifact was r…
Aug 23, 2026
e53cff5
The slot-total witness assumed two symmetric pairs; name all four hos…
Aug 23, 2026
8cc76d2
A refused serialization answered as an empty page, greening every neg…
Aug 23, 2026
7a4825a
A length is not a roster: distinctness, and an authored count that pi…
Aug 23, 2026
e4ff411
Merge remote-tracking branch 'origin/x/srv2-stick-capacity-homonym' i…
Aug 23, 2026
d17907a
Merge remote-tracking branch 'origin/session/warm-tern-755-width-witn…
Aug 23, 2026
62b590c
Merge remote-tracking branch 'origin/session/warm-tern-755-converge-s…
Aug 23, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions dag/extdeps/memory/samsung.dag
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ data extdeps_model_scope: ExternalModelScope = ExternalModelScope {
further_citations: []
}

data stick_capacity_bytes: ByteSize = byte_size(34359738368)
data stick_capacity_bytes_32g: ByteSize = byte_size(34359738368)

// PROVENANCE, SPLIT BY WHAT ACTUALLY SUPPORTS EACH FACT, because the module scope binds its
// citation to this exact declaration and a generic DDR4 reference cannot carry a vendor SKU.
Expand Down Expand Up @@ -55,7 +55,7 @@ data m386a4g40dm0_cpb_catalog: DramModuleCatalogRow = DramModuleCatalogRow {
part_number: "M386A4G40DM0-CPB",
manufacturer: samsung,
generation: dram_generation_ddr4,
capacity_bytes: stick_capacity_bytes,
capacity_bytes: stick_capacity_bytes_32g,
data_rate_mts: 2133,
ecc: true,
buffering: LoadReduced,
Expand Down
6 changes: 3 additions & 3 deletions dag/extdeps/memory/sk_hynix.dag
Original file line number Diff line number Diff line change
Expand Up @@ -13,13 +13,13 @@ data extdeps_external_authority_anchor: ExternalAuthority = ExternalAuthority {
}
}

data stick_capacity_bytes: ByteSize = byte_size(17179869184)
data stick_capacity_bytes_16g: ByteSize = byte_size(17179869184)

data hma82gr7afr4n_vk_catalog: DramModuleCatalogRow = DramModuleCatalogRow {
part_number: "HMA82GR7AFR4N-VK",
manufacturer: sk_hynix,
generation: dram_generation_ddr4,
capacity_bytes: stick_capacity_bytes,
capacity_bytes: stick_capacity_bytes_16g,
data_rate_mts: 2666,
ecc: true,
buffering: Registered,
Expand All @@ -33,7 +33,7 @@ data hma82gr7afr8n_vk_catalog: DramModuleCatalogRow = DramModuleCatalogRow {
part_number: "HMA82GR7AFR8N-VK",
manufacturer: sk_hynix,
generation: dram_generation_ddr4,
capacity_bytes: stick_capacity_bytes,
capacity_bytes: stick_capacity_bytes_16g,
data_rate_mts: 2666,
ecc: true,
buffering: Registered,
Expand Down
100 changes: 100 additions & 0 deletions dag/gunbc/dispatch_selection.dag
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,12 @@ import gunbc.roadmap_model {
IntricacyHigh,
PrsMerged,
}
import product.placement_supply { HostIdentity }
import gunbc.fleet_capacity_control {
fleet_capacity_admission, fleet_capacity_admission_in, fleet_capacity_admission_admits,
HostCapacityWithdrawal, ProviderCapacityWithdrawal,
withdrawn_hosts, withdrawn_providers,
}
import gunbc.roadmap_dashboard_instance {
HostDashboardInstance,
DashboardExistingProviderState,
Expand Down Expand Up @@ -612,7 +618,101 @@ fn claude_offer_for_instance(instance: HostDashboardInstance) -> ClaudeOffer {
)
}

// THE OPERATOR CAPACITY GATE, APPLIED WHERE THE OFFER IS MADE RATHER THAN WHERE IT IS CHOSEN.
//
// A withdrawn host or runtime makes NO OFFER, so ResolvedProviderSelection has no constructor for
// it -- the cut-off provider is not selected-and-then-rejected, it is unselectable. Gating after
// selection instead would concede that the bad state is writable and leave a refusal to catch it
// (DESIGN section 5: construction over validation).
//
// THE WITHDRAWALS ARE RETURNED SEPARATELY AND THAT IS NOT A CONVENIENCE. An inventory emptied by
// withdrawal and an inventory empty because nothing is installed are different facts with opposite
// remedies, and a bare filter renders both as the same empty list -- the empty-observation narrow,
// where could-not-offer becomes the verdict nothing-is-available. Keeping the removed rows
// addressable is what lets a consumer say WHY it has no offers.
fn instance_capacity_host(instance: HostDashboardInstance) -> HostIdentity {
instance.host_identity as HostIdentity
}

// THE GATE TAKES ITS ROSTERS AS ARGUMENTS FOR THE REASON THE AUTHORITY DOES, ONE LAYER OUT.
//
// The live rosters are empty, so a gate that read them directly could only ever be witnessed in
// its neutral state -- a fixture could prove the gate is WIRED and never that it CUTS, which is a
// green test over the half that does nothing.
fn offer_is_capacity_admitted_in(
host_rows: List<HostCapacityWithdrawal>,
provider_rows: List<ProviderCapacityWithdrawal>,
instance: HostDashboardInstance,
offer: ProviderOffer,
) -> Bool {
fleet_capacity_admission_admits(admission: fleet_capacity_admission_in(
host_rows: host_rows,
provider_rows: provider_rows,
host: instance_capacity_host(instance: instance),
provider: provider_offer_kind(offer: offer),
))
}

fn capacity_admitted_offers_in(
host_rows: List<HostCapacityWithdrawal>,
provider_rows: List<ProviderCapacityWithdrawal>,
instance: HostDashboardInstance,
offers: List<ProviderOffer>,
) -> List<ProviderOffer> {
filter(offers, o => offer_is_capacity_admitted_in(
host_rows: host_rows, provider_rows: provider_rows, instance: instance, offer: o))
}

fn capacity_withdrawn_offers_in(
host_rows: List<HostCapacityWithdrawal>,
provider_rows: List<ProviderCapacityWithdrawal>,
instance: HostDashboardInstance,
offers: List<ProviderOffer>,
) -> List<ProviderOffer> {
filter(offers, o => !offer_is_capacity_admitted_in(
host_rows: host_rows, provider_rows: provider_rows, instance: instance, offer: o))
}

fn capacity_admitted_offers(
instance: HostDashboardInstance,
offers: List<ProviderOffer>,
) -> List<ProviderOffer> {
capacity_admitted_offers_in(
host_rows: withdrawn_hosts, provider_rows: withdrawn_providers,
instance: instance, offers: offers)
}

fn capacity_withdrawn_offers(
instance: HostDashboardInstance,
offers: List<ProviderOffer>,
) -> List<ProviderOffer> {
capacity_withdrawn_offers_in(
host_rows: withdrawn_hosts, provider_rows: withdrawn_providers,
instance: instance, offers: offers)
}

fn provider_inventory_withdrawn_for_instance(
instance: HostDashboardInstance,
) -> List<ProviderOffer> {
capacity_withdrawn_offers(
instance: instance,
offers: declared_provider_inventory_for_instance(instance: instance).offers,
)
}

fn provider_inventory_for_instance(instance: HostDashboardInstance) -> ProviderInventory {
ProviderInventory {
offers: capacity_admitted_offers(
instance: instance,
offers: declared_provider_inventory_for_instance(instance: instance).offers,
),
}
}

// THE DECLARED INVENTORY, BEFORE THE OPERATOR GATE. Kept as its own function so the gate has an
// unfiltered denominator to compare against; a gate folded into the construction below would have
// nothing to report a withdrawal against.
fn declared_provider_inventory_for_instance(instance: HostDashboardInstance) -> ProviderInventory {
if instance.instance_id == srv2_dashboard_lab_id
|| instance.instance_id == srv2_dashboard_preview_id {
ProviderInventory {
Expand Down
Loading
Loading