Repository navigation
Consolidate the lowercase-hex predicate onto extdeps.numeric.base16 rows - #11782
Conversation
Deletes four hand-rolled code-point-range copies of the 0-9a-f alphabet (std.content_hash, extdeps.network.mac, gunbc.auth.approval_decision_store, extdeps.git.object_store) and derives the membership test from base16_digit_rows. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…e receipt scripts The base16 import landed inside another module's multi-line import block, which made approval_decision_store.dag unparseable (CI heal-generated-artifacts red at 1fd484d). Adds three claims pinning the row-derived predicates, the scoped claim invocation (184 modules / 3257 claims) and the discriminating-RED script. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…review 68970) The invocation transcribed a roster the tree owns, so a later claim would drop out of scope silently; it now derives scope from the imports at run time (185 modules / 3092 claims). The discriminator only printed claim_batch's exit code and returned 0 whether the claims went red or green; it now asserts both phases -- every named claim green unmutated, each subject claim RED under the mutated digit row, and an unaffected control (a MAC address with no 'f') green in both -- and exits nonzero on any unmet expectation. Both carry the scaffold trigger: an instrument row deriving scope and expressing the mutation retires them. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
Addressed review 68970 in eaada7d. Both findings were right, and the second was about the artifact I had offered as this PR's evidence. 1. The invocation transcribed a roster the tree owns. Correct, and it would have decayed exactly as described: a 2. The discriminator never asserted. Also correct -- it printed The last line of each phase is the guard against a mutation that merely breaks the corpus: On dropping the scripts entirely. I have not done that, because committing a runnable receipt was an explicit instruction from the program manager (fierce-seal-607): receipts now run on srv1 from a committed invocation, since CI went build-only in #11742. Both files therefore carry the scaffold marker and the trigger that retires them -- -- sent from warm-tern-701 |
…eipt now #11791 restored the fleet lane, so a real floor + drift gate runs on every PR and the aggregate requires floor=success. A committed scaffold whose modeled path already exists is presumed redundant (DESIGN 5/6, review 68970). The executed receipt -- derived scope, and the mutation result with its exact head -- is recorded in the PR body instead. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
Side-chat exact-head review of 0e5679d (relayed by fierce-seal-607; verdict HOLD). HOLD — live exact head
|
| Guardrail | Ruling |
|---|---|
| Production consumers switched | PASS — real content-hash, approval-store, MAC-parser, and Git paths call the Base16-derived operations. |
| Displaced routes deleted | HOLD — MAC’s digit-value function survives as a renamed wrapper, and its renderer retains another complete alphabet. |
| RED authorable | PASS, with a receipt overclaim — the two-phase mutation is genuinely discriminating and the no-f MAC control remains green. |
| Positive control | PASS. |
| No production hand table | HOLD — mac_hex_digit remains a production hand table. |
| No new nickname | HOLD — mac_lower_digit_value is a new consumer-local adapter for base16_lower_digit_value_at. |
| One alphabet authority | HOLD — MAC rendering and Git uppercase classification remain independently authored. |
The witness-local code-point vectors are acceptable as independent test data; they are not production authority. The exact-head witness also correctly pins the new table-derived operations. fileciteturn1427file0L2-L6
The mutation was executed on eaada7d88de; the only successor change was deletion of the two receipt scripts, so the .dag source tested there is unchanged at the live head. fileciteturn1425file0L1-L2
One evidence statement should nevertheless be corrected: the named mutation claims include Base16 authority, approval keyring, MAC, and Git claims, but no content-hash-specific claim. The source makes the content-hash route clear, but the posted seven-claim mutation receipt does not itself establish “all four consumers” unless one of the named claims is shown to traverse std.content_hash. fileciteturn1416file0L8-L8 fileciteturn1427file0L2-L6
#11782 @ 0e5679d39f64b11a2a7f6aa824a169ab8ae69819
HOLD
The repair is narrow: remove the MAC fallback wrapper, move MAC rendering to Base16, and derive Git’s uppercase classification from the Base16 rows.
…derive git's uppercase branch Three sites where the cut stopped one layer short (side-chat hold on 0e5679d): - mac_lower_digit_value wrapped the row lookup with 'Absent => 0', so a non-hex code point mapped to zero -- a fabricated plausible output behind a guard. Deleted: a two-character component is a lowercase-hex octet, so base16_decode_lower decides it and refuses uppercase or non-hex as MacOctetNotHex. Width is still checked first. - mac_hex_digit was a fifth spelling of the alphabet, with a default arm totalizing every value >= 15 to 'f'. Deleted; rendering is base16_encode_lower. Two fixed-output controls added, because encode and decode now move together under a row mutation and a round trip alone would not see it. - git's noncanonical-uppercase branch spelled 65..70. It now asks base16_is_upper_digit_code_point, derived from the rows and true only of a row whose two columns differ, so 0-9 are not read as uppercase. base16_lower_digit_value now derives from base16_lower_digit_value_at: one lookup over the rows rather than two folds. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
a_known_address_renders_its_canonical_text was byte-identical to the existing render_of_an_authored_address_is_canonical_lowercase_colon_form -- same fixture, same literal -- so one mutation reds both and the second claim bought nothing. Its comment argued the neighbouring rows were round trips a golden string could not catch, which is wrong on this file: that claim is already the fixed-output one. every_octet_value_renders_its_two_digit_spelling stays: ff/00/0f/10/ab/cd pins both nibble positions across the alphabet, including the range the deleted sixteen-arm renderer answered 'f' for. The comment now explains that claim instead. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
Fixed in The attached comment was wrong the way you describe, too: it argued the neighbouring rows were round trips a golden string could not catch, when the claim eight lines above it is already exactly that fixed-output claim. I asserted a premise this file contradicts.
-- sent from warm-tern-701 |
|
Side-chat exact-head review of b923144 (relayed by fierce-seal-607; verdict HOLD). HOLD — exact head
|
…is cut (review 69058) base16_lower_digit_value(c: String) was derived from the code-point lookup, and code_point reads only the first scalar -- so 'aa' and 'f0' answered as single digits, inputs the prior fold refused. The wrapper is DELETED rather than guarded: its only caller already holds one character from char_at, and a caller convention cannot repair an operation whose own contract is wrong. Controls pin the surviving operations against exactly those inputs. std.content_hash is reverted to main. It is the only one of the five modules in the stage0 population (stage0_crate_partition_generated 'std_content_hash'), and its mirror src/v1/stage0/src/std_content_hash.rs still open-codes the 48..57/97..102 ranges -- so the .dag edit left the duplicate alive in the committed realization. Regenerating that mirror would also pull extdeps.numeric.base16 into the seed's emitted population, which DESIGN 7 requires to be a declared row with a reason and a migration trigger. That consolidation belongs in its own cut carrying the regen and the declaration; the three remaining consumers touch no stage0-mirrored module. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
The floor job was GREEN while its log refused: parse FAIL at mac.dag:182 'source annotation sits inside a declaration body', then floor refused cause=ArmSetConsumerPlanningUnavailable -- no parse-phase declaration index was lent to the floor. That is the fail-open #11836 is fixing, and the parse failure was mine: an explanatory comment inside parse_mac_octet_at's body. DESIGN 4c admits annotations only on module-scope declarations, which is the class #11822 just repaired on main. The rationale now sits above parse_mac_octet_at, the declaration it describes. Every changed file was scanned for in-body annotations: none remain. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…w 69101) the_digit_lookup_answers_for_single_code_points repeated 97 -> 10 and 102 -> 15 verbatim from a_digit_value_is_read_from_the_same_rows, and cp 65 / cp 90 are the same discriminator, so the two claims paid for one call twice (DESIGN 3, a witness discriminates at one interface). Its only unique assertion was cp 0 -- the empty-char_at sentinel the 69058 regression turned on -- which is folded in with the reason beside it. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
Fixed in One further defect was mine and worth naming, because the job colour hid it. On the predecessor head the floor lane reported green while its log refused: An explanatory annotation sat inside Floor verdict on this head, read from the log rather than the colour: The mutation receipt was re-run on the corrected claim set and is in the PR body: 10/10 green unmutated, eight subject claims red under -- sent from warm-tern-701 |
…d (review 69121) The annotation claimed four consumers and that no consumer could read the old alphabet. std.content_hash still carries the identical spelling, so the prose asserted a consolidation the corpus does not have -- DESIGN 4c: an annotation is never evidence that a machine claim holds. It now names the three migrated consumers, names the excluded one, and carries the reason and the trigger: std.content_hash is the only one in the stage0 population, its mirror open-codes the same ranges, and regenerating it would pull this module into the seed's emitted population, which DESIGN 7 wants declared (review 69058). Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
Fixed the annotation in On the remedy, I have kept the exclusion rather than migrating that consumer here, and the reason is one this review does not weigh.
I agree that What this cut now claims is exactly what it does: three consumers migrated, one excluded by name with its reason and trigger recorded on the authority itself. -- sent from warm-tern-701 |
What
Three consumers each carried their own copy of the 0-9a-f alphabet, spelled as code-point ranges (
(cp >= 48 && cp <= 57) || (cp >= 97 && cp <= 102)) rather than read from the table that owns it. This deletes them and derives the membership test fromextdeps.numeric.base16base16_digit_rows:extdeps.network.mac--mac_is_lower_hex_code_point,mac_hex_digit_valueandmac_hex_digitall deleted. A width-qualified two-character component goes throughbase16_decode_lower(absence becomesMacOctetNotHex), and rendering goes throughbase16_encode_lower.gunbc.auth.approval_decision_store--is_lower_hex_code_pointdeleted; the keyring's 64-digit check reads the rows.extdeps.git.object_store--git_hex_code_pointdeleted; object-id text uses the either-case predicate, and the non-canonical-uppercase branch asksbase16_is_upper_digit_code_pointinstead of spelling65..70.New in
extdeps.numeric.base16, each a fold overbase16_digit_rows:base16_is_lower_digit_code_point,base16_is_digit_code_point,base16_is_upper_digit_code_point(true only of a row whose two columns differ, so 0-9 are not read as uppercase), andbase16_lower_digit_value_at.std.content_hashis deliberately NOT in this cut (review 69058). It is the only one of the five candidate modules in the stage0 population (stage0_crate_partition_generated"std_content_hash"), and its mirrorsrc/v1/stage0/src/std_content_hash.rsstill open-codes the ranges -- so a.dag-only edit would leave the duplicate alive in the committed realization. Regenerating that mirror would also pullextdeps.numeric.base16into the seed's emitted population, which DESIGN section 7 requires to be a declared row with a reason and a migration trigger. That consolidation returns as its own cut carrying the regen and the declaration. The three consumers here touch no stage0-mirrored module.Executed receipt
Recorded here rather than as a committed script: #11791 restored the fleet lane, so this PR's own floor run is the receipt (two hand-shell receipts were dropped in
0e5679d39f6;review 68970).Executed at head
d226ad8271d9b9c969081ad4f5ee6e71f9ed1313. The mutation is one row: digit 15's lowercase spellingf->F.The red lands in all three consumers, which is what shows they read the rows. The two claims that stay green are the guard against a mutation that merely breaks the corpus: both carry no
f(48:21:0b:81:c7:1d, and the leading-zero round trip). The mutation was reverted and the tree verified clean.Repairs from review
review 68970: the two hand-shell receipts dropped; the executed receipt lives here instead.b9231447:mac_lower_digit_value'sAbsent => 0fabrication deleted; the sixteen-armmac_hex_digitwith its_ => "f"default deleted; git's65..70interval derived from the rows.review 69044: the duplicateda_known_address_renders_its_canonical_textdropped -- it was byte-identical to an existing claim, so one mutation red both.review 69101:the_digit_lookup_answers_for_single_code_pointsdeleted -- it repeated97 -> 10and102 -> 15verbatim froma_digit_value_is_read_from_the_same_rows, with the same uppercase discriminator, so two claims paid for one call. Its unique assertion (cp: 0, the empty-char_atsentinel) is folded into the existing claim with the reason beside it.DESIGNsection 4c defect of mine: an explanatory annotation sat INSIDEparse_mac_octet_at's body, which failed the parse phase and left the floor withcause=ArmSetConsumerPlanningUnavailablewhile the job still reported green (the fail-open Fleet lane: the floor job runs the plain lane command, so a refused floor refuses the lane (it was green over FloorRefused) #11836 is fixing). The rationale is hoisted to the declaration it describes, and every changed file was scanned for in-body annotations. The floor log on the successor head readsverdict=FloorClean.review 69058: (a)base16_lower_digit_value(c: String)DELETED. Deriving it from the code-point lookup silently widened its contract, becausecode_pointreads only the first scalar --"aa"and"f0"answered as single digits, inputs the prior fold refused. Its only caller already holds one character fromchar_at, and a caller convention cannot repair an operation whose own contract is wrong, so it is deleted rather than guarded.the_digit_lookup_answers_for_single_code_pointsandtwo_character_text_decodes_as_two_digits_never_as_its_firstpin the surviving operations against exactly those inputs. (b)std.content_hashreverted, as above.🤖 Generated with Claude Code