Repository navigation
fabric_capacity_standing: a probe field that is not there is Absent, not "" - #11930
Conversation
…not "" The floor phase has been refusing gunbc.instruments.fabric_capacity_standing since #11555: `field_at` passed `lines.skip(n: n).first()` -- honestly Optional<String> -- straight into `trim(s: String)`, and `tokens_from_gpu_kv_cache_size_line` did the same on `split(...).first()`. The required gate's floor job concluded success over both, which is what #11829 (binding the receipt's adjudicator) made visible. The repair is not a cast. An index past the end of the read lines is not a field, so `field_at` returns `String?` and the absence is propagated to the arm that already names what the missing field MEANS: `field_named` -> `refuse_slot` -> `ProbeUnreadable { detail }` for the probe roster, and `none` for the vLLM startup-line readers, which are already Optional-valued and already refuse an unparseable line. No empty string stands in for "no field" anywhere. That shape is the module's neighbours' shape, not a new one: v2.workflow.floor_terminal_ledger_wire ledger_wire_field_at, extdeps.bmc.ipmi_sdr sdr_field_at, extdeps.nvidia.cuda_driver cuda_reply_field_at and extdeps.linux.proc_pid_stat proc_pid_stat_field_at all return an Optional field and match at the caller. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Receipt: the floor phase stops refusing, and the instrument discriminatesInstrument: The floor's own subject selection names the module, so this is not an entry-scope run standing in for the floor: RED — the control, with
|
The CI arm: the floor lane passes on this head
That is the arm the brief asked for, and it is the one that matters more than the local run: the local receipt above is preparation-only and says nothing about the fold, whereas this lane ran the fold to completion. The two refusals reported from run 35553819536 job 106193439576 are gone, and no new refusal took their place. — sent from calm-lynx-80 |
#11930 landed the fabric_capacity_standing Optional propagation and another change landed the lens construction_justification, both while this branch was in review. Taking main's side for both files rather than mine: they landed first, and a second authoring of a fix already on main is the duplication DESIGN 2 refuses. WORTH RECORDING, because it is evidence and not just a conflict: the lens fix on main reached the SAME classification mine did, WallAfterGrounding dissolves_to SingleAuthority, arrived at independently. Two readings agreeing on a judgment call is better evidence for it than either alone. What remains on this branch is the four that nobody else has fixed: the std.nat import, the two re-pointed PRE_EXISTING_CITATION_DEBT subject modules, and the guarantee-stall roster membership. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
The defect
gunbc.instruments.fabric_capacity_standinghas not typechecked since #11555. The floor phase refuses it at two sites, both aList.first()(honestlyOptional<T>) handed straight totrim(s: String):(reproduced on
origin/mainat5ed882618, run 35553819536 job 106193439576). The required gate's floor job concluded success over it the whole time; #11829, which binds the receipt's adjudicator, is what made it visible.The repair
Not a cast, and not a fabricated default (DESIGN §5 forbids an empty string standing in for "no field" exactly as it forbids the silent widen). An index past the end of the read lines is not a field, so
field_atreturnsString?and the absence is propagated to the arm that already names what a missing field means:field_at→field_named→int_named/captured_named/nat_named→decode_probe, whoseAbsentarms already callrefuse_slot, i.e.ProbeUnreadable { detail: slot_missing(...) }. The module's existing refusal vocabulary carries it; nothing new was minted.after_startup_prefix,tokens_from_gpu_kv_cache_size_line,hundredths_from_maximum_concurrency_line,hundredths_from_two_digit_xare all alreadyInt?/String?-valued and already refuse an unparseable line; the newAbsentarm joins that samenone.Site 289 (
split(s: after, delimiter: " ").first()) routes through the samefield_at(..., n: 0)rather than growing a second way to read a segment.field_atis module-local (no callers outside this file), and the-> T?+ match-at-the-caller shape is the one its neighbours already use:v2.workflow.floor_terminal_ledger_wireledger_wire_field_at,extdeps.bmc.ipmi_sdrsdr_field_at,extdeps.nvidia.cuda_drivercuda_reply_field_at,extdeps.linux.proc_pid_statproc_pid_stat_field_at. So this conforms to an existing model rather than diverging from one.No behaviour changes on a well-formed probe read:
decode_probealready refuses unless the line count equals the roster length, andafter_startup_prefixalready requires ≥2 split parts, so the newAbsentarms are reached only where the old code would have trimmed a non-existent line.Evidence
claim_executor --required-floor --source-root dag --source-root src/v2strict-preparation over this head — the two errors gone, no new refusal (receipt in a follow-up comment).The module is not excluded from the closure.
Scope held to these two sites and what they force in this module; the other two main-side floor blockers are #11907's.
🤖 Generated with Claude Code