Repository navigation
CI: restore the required-floor-claim-cost upload; RFM row for an instrument artifact that stopped existing while cited - #13227
Conversation
…r job; RFM row for an instrument artifact that stopped existing while cited The floor job emitted by gunbc.compiler_gate_workflow kept GUNBC_REQUIRED_FLOOR_CLAIM_COST, so the TSV was written on every run, but the upload row lived only in gunbc.witness_floor_workflow's own step list and was lost when #11742 replaced the job. One shared bound step now serves both lists, and witnesses.yml is regenerated (8 added lines). Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
briansrls
left a comment
There was a problem hiding this comment.
Reviewed exact head 62ad6a28db5c8a085666fa863317474b506b8be6. Approved.
The repair is correctly placed at the emitted required-floor job rather than at the parser or the later qualification consumer:
required_floor_claim_cost_upload_bound_stepis now the one step authority, reused by both the retained witness-floor list andcompiler_gate_floor_measurement_bound_steps; there is no alias or second hand-written upload definition.- Its condition is the floor precondition, not the adjudication verdict. Because it contains the status function
cancelled(), it can still run after a red floor/adjudication so long as the build completed, while a cancelled run does not publish a partial receipt. if-no-files-found: errorretains the important distinction between an empty/no-site population and a file that was never produced.- The generated workflow delta is exactly the one eight-line upload step and no new job or lane.
- The exact-head required run is green and published a real
required-floor-claim-costartifact (17,551 bytes, 14-day retention), so this is not only an emitter-shape assertion.
Judgment on the four sibling uploads
Leaving the admission roster, expected-red join, long-home agreement, and cross-claim-demand uploads unrepaired is acceptable for this narrow PR. The claim-cost artifact has an immediate production consumer in the runner-qualification stack; restoring all siblings without first re-validating each producer and consumer would mix four separate instrument contracts into the blocker for that route.
The recurring-failure row is honest that those four remain broken and that one shared bound-step repair does not discover or repair the next missing artifact. It must therefore not be cited as closing those instances. Each remaining output still needs one of two explicit outcomes in its own lane:
- restore the upload after proving the current job still produces a valid file and a current reader still needs it; or
- delete/retire the stale artifact declaration and every statement claiming required runs publish it.
In particular, required-floor-disposition is still cited by multiple diagnostic and rung-drop records, so its absence is real debt rather than historical trivia. That is a follow-up priority, not a reason to delay the independently valid claim-cost repair.
No semantic blocker remains.
Main (#13227) restored the per-claim cost receipt upload in the required floor job through one bound function. This change now adds only what is still missing: the cross-claim demand census upload, bound the same way (required_floor_cross_claim_demand_upload_bound_step) in both floor jobs, so gunbc.floor_cost_distribution_instrument has its second input. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
… auth_input, attempt-bound and unambiguous claim-cost read, narrowed claim-cost frontier (Merges #13211 8bb3f19, which owns github.WorkflowRuns auth_input and the token join.) 1. github.Artifacts declares auth_input: auth_token. collect_qualification_instruments refuses before any read unless token_names_registration holds (QualificationCollectUnderAnotherInstallation); job_log_standing is admitted to collect_qualification_instruments_under. 2. The claim-cost row no longer says the upload is missing (#13227 restored it); it names binary REST transport, the exact TSV member's inflation, parse_claim_cost_tsv, and binding to this run. 3. Same-name duplicates refuse (ClaimCostArtifactAmbiguous); the run is re-read after the listing and a run past the collected attempt refuses (ClaimCostRunAdvancedPastAttempt / ClaimCostRunUnreadable). Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Restores the
required-floor-claim-costartifact on every required run, and files the class as a recurring failure mode. This is a separate PR from #13225, whose claim-cost row names this as one of its two missing capabilities.What happened
gunbc.compiler_gate_workflow. It keptGUNBC_REQUIRED_FLOOR_CLAIM_COST, soclaim_executorkept writingrequired_floor_claim_cost.tsvon every run.gunbc.witness_floor_workflow's own step list, which no longer emitswitnesses.yml.required-ci-measurement-receiptandcompiler-pair-candidate.required-ci-measurement-receiptcannot stand in for the claim-cost artifact: it isMeasurementCompleted { blockers } | MeasurementUnreached, with no per-witness cost.Change
required_floor_claim_cost_upload_bound_stepis one shared bound step.witness_floor_workflowand the required floor job both bind it by name.!cancelled() && build ok).witnesses.ymlis regenerated. The diff is the single 8-line upload step and nothing else.Not repaired here, named in the row: four sibling uploads were lost the same way: the admission roster, the expected-red roster join, the long-home storage agreement and cross-claim demand.
RFM row
instrument_artifact_stopped_existing_while_citedgives the recognition rule and states the ceiling as mechanically preventable. Its next rung is an emission-time join between cited artifact-name declarations and the emitted upload steps.Behaviour note:
if-no-files-found: errormatches the old step. A floor that refuses before it writes the TSV gets a second red step; that job is already red.Evidence:
gunbc.generated_artifact_emitartifact_generate(WitnessFloorYamlArtifact).required-floor-claim-cost.🤖 Generated with Claude Code