Repository navigation
Nat de-fork: one Peano Nat in std.nat, realized as the host integer (binding + cut) - #12846
Merged
Merged
Conversation
…once at the end of seed typechecking std.literal_elaboration KernelGrounding + gunbc.structural_realization_bindings kernel_grounding_rows bind an inductive carrier to the kernel integer its constructors denote, keyed on the carrier's DeclarationRef. v1.compiler.infer ground_kernel_views folds constructor occurrences and constructor patterns of a bound carrier into integer form after inference, exhaustiveness and descent annotation, so the emitter and the interpreter read one tree. A bound carrier contributes no structural emit summary, is kept out of the recursive-type set, is not judged as a concrete coproduct by the payload-versus-parent inhabitance check, and has no constructor imports; the Rust emitter renders its declaration as the kernel integer's spelling. No production declaration is both bound and inductive at this commit (std.nat Nat is still the semiring alias), so all of it is a no-op over the corpus. Receipt (BuildBuddy 24GB, exact sha): seed regen fixed point (first_generation_equal=true); self-host crate emitted from v2.compiler.compile (218 files) byte-identical to base e7a527d, tree sha256 cc9510cc750ba69ec4595bf1bbf3acbb10d3bcc3d85f775ce17daf9979df7ba4 on both sides. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…s the kernel integer
Operator ruling A (2026-09-30); XL-0N superseded for std Nat by operator default,
2026-09-30.
- std.nat Nat = Zero | Succ { prev: Nat }: the only declaration of the naturals.
Operations use host operators; nat_cata is an accumulating (tail) eliminator.
nat_semiring / nat_additive_commutative_monoid are inhabitance witnesses.
- std.magnitude deleted with its mirror and crate-partition rows.
- v2.std.nat reduced to the node-bound law roster; 52 consumers repointed to std.nat.
- Semiring by inhabitance: std.algebra OrderedSemiringProfile (the ordered ring's
surface without negate) and a Nat carrier row; witness asserts ops derive and
negate does not (and does for Int).
- XL-0N's structural lane re-subjected to test.fixture.structural_peano_nat
StructuralNat (distinct names: a second corpus Nat would re-create the fork);
literal and ordering rows repointed to it; both XL-0N claims kept.
- Seed interpreter: #5428 spelling-keyed Zero/Succ arms deleted; a constructor
pattern over a host integer now refuses, located; a Peano-unfolded literal
evaluates as its constructor image. Seed-growth row
gunbc.kernel_grounding_interpreter_seed_growth.
- Inference: a grounded carrier admits itself and its transparent aliases at the
inhabitance verdict and the call-argument check (std.integer NonNegativeInt).
- Interpreted/emitted agreement control: test.claim.std_nat_realization_agreement_witness_test
plus compiler test ct_std_nat_realization_agreement_test over the stage0 mirror.
- Retired: gunbc.guarantee_stall.two_nat_authorities_stall (its trigger is this cut),
the nat-grounding design-doc bind; plan and notes updated.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…dged as a type argument Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…ensity imports ConstructionJustification The qualified value spelling (std.nat.Zero) was a workaround for the two-Nat ambiguity; with one Nat it reaches the emitter's qualified-value route, which has no registry row for std.nat and renders a refusal (emit-build: unreachable call in v2_lens_fact_density.rs). The changed-witness gate also required the import fact_density had been relying on the bare channel for. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
# Conflicts: # src/v1/stage0/src/compiler_tests.rs # src/v1/stage0/src/std_algebra.rs # src/v1/stage0/src/std_compiler_entry.rs # src/v1/stage0/src/v1_compiler_compiler_tests_rust.rs # src/v1/stage0/src/v1_compiler_emit_rust.rs # src/v1/stage0/src/v1_compiler_infer.rs
Ledger-Repair-Judged: docs/design-rung-drops.md Heal-Candidate-Run: 36796585266
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…ssion/lively-lark-214
…floor subject These modules sit outside an ordinary PR's floor subject (~2266 modules); the std.nat cut pulls every std.nat dependent in (~4000), and the floor then compiles them for the first time since they went stale. Each is a defect of the test module, not of the cut (llm_attempt_receipt_witness refuses identically on main when compiled as an entry): - floor_preparation_shared_build_witness_test: arm for the CrossClaimPureProducerWarm phase - citation_cit0_witness_test: CitationTarget.selector is optional; match Present/Absent first - build_cache_placement_observation_test: placement_verdict qualified to its provider - build_cache_endpoint_path_test: the state list declares its element type - llm_attempt_receipt_witness_test: the zero-denominator throughput is a declared TokenThroughput Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
The widened floor subject (std.nat dependents) reaches v2.extdeps.file_system, a third declarer of Filesystem, so the bare read in harness_cli, harness_turn, repository_load and repository_save became ambiguous. Each already imports extdeps.filesystem.filesystem_io and uses its service. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
The widened floor subject reaches v2.std.cardinality, a second declarer of Unit beside std.types; the bare read in systemd_property_directive_overlap means extdeps.systemd's SystemdUnitProperty variant, so it is imported from there. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
# Conflicts: # dag/test/claim/build_cache_endpoint_path_test.dag # dag/test/claim/citation_cit0_witness_test.dag # dag/test/claim/llm_attempt_receipt_witness_test.dag # src/v1/stage0/src/std_algebra.rs # src/v1/stage0/src/std_measure.rs
…e merged tree Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
# Conflicts: # src/v1/stage0/src/v1_interpreter.rs
# Conflicts: # src/v1/04_infer.dag # src/v1/stage0/src/v1_compiler_infer.rs # src/v1/stage0/src/v1_compiler_infer_env.rs
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…sing int helpers A Nat operand's type reference no longer has a checkpoint of its own (Nat is declared inductively), so expr_realizes_as_refusing_int answered false and Nat arithmetic emitted Rust's wrapping i64 operators instead of v1_rt::int_add/sub/mul. Identified by declaration, the carrier realizes as the Int checkpoint, so its operators are that primitive's refusing helpers again. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…ified Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…low through v1_rt Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…mode row Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
# Conflicts: # src/v2/test/lens_fact_density/fact_bundle_named_test.dag
…clarationRef The env-name lookup did not reach imported or call-result operands (k * k with k from a call still emitted the wrapping token). The type reference carries decl std.nat::Nat; the kernel grounding binding is consulted by that DeclarationRef, the key rust_kernel_grounded_type_decl uses. The executed control now targets std.realization_schedule runnable_batch_clamp_ms, a call-result product the defect emitted raw. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…first repair Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…Nat (pre-existing on main) Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…e defect is the implicit Int->Nat crossing, already rostered as the_checker_admits_a_cast_the_evaluator_refuses Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
github-merge-queue
Bot
removed this pull request from the merge queue due to failed status checks
Oct 2, 2026
…lows) Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…file its numeral-admission arm Main's algebra_profile_admits_numeral had no arm for the branch's OrderedSemiringProfile (non-exhaustive match, refused at regen). A non-negative numeral names the image of a natural under the unique semiring homomorphism out of the naturals, so it is admitted. Three-round regen on a 24G-cgroup BuildBuddy runner: first_generation_equal=true, 161/161 adjudicated. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…t (fixed point: first_generation_equal=true) Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…ors, regen follows Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…t_generation_equal=true) Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…ite the host comparison They were one-line nicknames for ==, <=, >= carried over from the deleted v2.std.nat. nat_lte's two callers (v2.lens.cost.expr, v2.lens.cost.valuation) now write <=; the agreement witness asserts agreement_three() != 0. Mirrors regenerate in the next commit. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
… the Nat repoint) Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…t_generation_equal=true) Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Contributor
Author
|
Review 74240 addressed in d88e267 (merged into head 78ddefc). — sent from swift-ram-239 |
…lows Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Main (#12559) added a required parent_identity field to VariantPattern; the grounding fold rebuilt the pattern without it, so the v2 self-compile refused (missing required field). The rebuilt pattern now keeps the original identity. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…r merging main (first_generation_equal=true) Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
gunbai-bot Bot
pushed a commit
that referenced
this pull request
Oct 3, 2026
…ed_semiring_templates composed from total_order_templates like its siblings; mirrors from main, regen follows Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
gunbai-bot Bot
pushed a commit
that referenced
this pull request
Oct 3, 2026
std_algebra.rs (generated mirror of dag/std/algebra.dag) changed on both sides: main via #12846 (Nat de-fork), the branch via the NFR exhaustive arms. It was regenerated from the composed authority; the first generation equals the textual union byte for byte, and the fixed point is verified. This merge is what took #12787 out of the merge queue as UNMERGEABLE. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
gunbai-bot Bot
pushed a commit
that referenced
this pull request
Oct 3, 2026
…tage0 to fixed point Conflicts: src/v1/04_infer.dag import lines only (union: the PR's text vocabulary from std.coercion + main's kernel_grounding_rows). Main's produced_is_kernel_grounded_carrier_or_its_alias admit arm auto-merged ahead of text_crossing_by_identity in direct_call_arg_type_mismatch; it fires only when the formal is identity-matched to a kernel_grounding_rows carrier (sole row: std.nat Nat), so no String crossing is admitted before the text wall judges it. Ledger appends kept on both sides; generated stage0 regenerated (main-built claim_executor, then fixed point at round 1); docs/design-rung-drops.md regenerated by docs_projection_gate regen. No new std.string_type imports. Walls: text_boundary_identity_wall 21/21, bare_name_ambiguity_wall 10/10. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
gunbai-bot Bot
pushed a commit
that referenced
this pull request
Oct 3, 2026
- structural_realization_bindings: take main's Peano fixture row and kernel_grounding_rows; the cut's deletion of the Boolean literal row and the connective-row family stands. - emit_rust: a type declaration realizes as a native alias (Bool, this cut) or a kernel- grounded decl (Nat, #12846) before falling back to the connective emission; the use-line filters keep both exclusions. - defork census: the open Nat/Bool row goes; both are in defork_census_resolved. - peano test: main's StructuralNat fixture, without the connective_rows argument or the BooleanUnfold arm. - realize_advisory_soundness: deleted on main (#13016), stays deleted. - Import lines: main's side, with Bool/True/False removed from v2.std.logic imports. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
gunbai-bot Bot
pushed a commit
that referenced
this pull request
Oct 3, 2026
…es its roster Admission surfaced reds already on main: eval_match and match_pattern were justified by both the kernel-grounding row (#12846) and the match-guard / value-depth rows (#12903), so the duplicate-key check failed. The later row drops them. The staleness claim (74,485 steps vs ~72,300 ceiling) now exercises seed_growth_stale_over on a supplied roster; the real-roster path stays executed by a_live_roster_declaration_is_not_reported_stale. The warm row is withdrawn: it did not move the cost. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Nat de-fork (work item adhoc-62b05aa9-8ec). XL-0N superseded for std Nat by operator default, 2026-09-30 (operator escalation via neat-boar-16 / wise-dove-693, which closed on ruling A: the Peano carrier, realized as the host integer on both seed routes). The operator can still reverse this.
XL-0N escalation: approved by timeout (neat-boar-16 ruling): the escalation that superseded XL-0N for std Nat drew no reversal within its window, so ruling A stands as approved.
The binding commit is kept separate for its byte-identity receipt; the cut and the operator repair follow.
Commit 1: realization binding (no-op over the corpus)
std.literal_elaborationKernelGroundingplusgunbc.structural_realization_bindingskernel_grounding_rows = [std.nat Nat], keyed on the carrier'sDeclarationRef. The zero and successor constructors are derived from the declaration's shape, not named in the row.v1.compiler.inferground_kernel_viewsruns at the end oftypecheck_module, after inference, exhaustiveness and descent annotation. It rewritesZeroto0,Succ { prev: e }toe + 1, a match over Nat to an if-chain on== k/>= kwith the predecessor bound asn - k, and a nested closed numeral pattern to a literal pattern. The emitter and the interpreter read that one tree, so the two routes cannot disagree.first_generation_equal=true);v2.compiler.compile(218 files) is byte-identical to basee7a527daba5, tree sha256cc9510cc750ba69ec4595bf1bbf3acbb10d3bcc3d85f775ce17daf9979df7ba4on both sides.Commit 2: the cut
std.natNat = Zero | Succ { prev: Nat }, chosen as the survivor by layer:std.integer,std.coercion's declaration-keyed rows and 562 consumer modules already point at it. The arrangement is acyclic becausev2.std.natimportsstd, never the reverse.std.magnitudeis deleted, along with its seed mirror and crate-partition rows.v2.std.natis reduced to its node-bound law roster, and 52 consumers are repointed tostd.nat.nat_catais an accumulating tail-recursive eliminator.std.algebragainsOrderedSemiringProfile(the ordered ring's surface withoutnegate) and a Nat carrier row. The inhabitance witness values arenat_semiringandnat_additive_commutative_monoid. Controls:add,mul,zero,oneandcomparederive for Nat;negatedoes not derive for Nat but does for Int.test.fixture.structural_peano_natStructuralNat. It uses distinct names on purpose: a second corpus type spelledNatwould re-create the bare-name fork. Its literal and ordering rows are repointed to the fixture, and both XL-0N claims are kept.Zero/Succarms are deleted; a user Peano-shaped type is no longer silently turned into integers. Two small additions keep that deletion safe. A constructor pattern matched against a host integer now refuses with its location, since it could otherwise fall through to a wildcard silently. And a Peano-unfolded literal evaluates as its constructor image. Seed-growth row:gunbc.kernel_grounding_interpreter_seed_growth(reason and trigger stated in it); everything that replaces the deleted arms is.dag.std.integerNonNegativeInt = Nat) at the inhabitance verdict and at the call-argument check. Without that, correct calls insemver.dagandcitation.dagrefused.test.claim.std_nat_realization_agreement_witness_test(interpreted) and the compiler testct_std_nat_realization_agreement_test(the seed's own emittedstd_nat) hold one program to the same expected values.gunbc.guarantee_stall.two_nat_authorities_stall, whose trigger is this cut, and the nat-grounding design-doc bind.Commit 3: Nat operators refuse overflow again (found by the self-host diff)
v1.compiler.emit_rustexpr_realizes_as_refusing_intanswered false and Nat+ - *emitted Rust's wrapping i64 operators instead ofv1_rt::int_*(silent wrongness in an emitted release build). No gate caught it; the self-host diff by name did.DeclarationRefthe type reference carries (std.nat::Nat), the same keyrust_kernel_grounded_type_decluses. A first repair (environment lookup by name) missed call-result operands and was replaced.test.claim.emitter_refusing_int_operator_witness_testw_nat_binary_operators_route_through_refusing_helpers(FAIL on the pre-fix seed, PASS after; Int/Float controls PASS on both). Executed: compiler testct_std_nat_operators_refuse_overflow_testruns the seed's emittedstd.realization_schedulerunnable_batch_clamp_ms(a Nat product of a call result): in-range 2015; overflow refuses with v1_rt'sinteger overflow:text; RED on the pre-fix mirror (rustc's panic text).gunbc.recurring_failure_modea_representation_change_drops_the_types_realization_checkpoint.Receipts (24GB BuildBuddy runner, exact sha)
c5e96922c7a:nat_difference_of_ordereddeleted, its subtraction inlined intonat_sub's non-underflow arm. Control fornat_sub(3, 17)on both routes: the interpretedtest.claim.std_nat_realization_agreement_witness_test(underflow_holds) and the emitted compiler teststd_nat_emitted_realization_agrees_with_the_interpreted_witness(generated fromv1.compiler.compiler_tests_rustct_std_nat_realization_agreement_testintosrc/v1/stage0/src/compiler_tests.rs) both requireNatSubtrahendExceedsMinuend, never a negative Nat. On that sha: seed fixed point; agreement witness 4/4; semiring 5/5; compiler testsstd_nat_emitted_realization_agrees_with_the_interpreted_witnessandstd_nat_emitted_operators_refuse_overflow_through_the_runtime_helpers2/2.first_generation_equal=true) on the merged head.gunbc compile --entry src/v2/compiler/00_compile.dag) at4349b1f22d9vs maind7f4da974c7: 222 files,cargo checkrc 0. Differing files:std_nat,v2_std_integer,v2_std_cardinality,v2_std_verdict,v2_lens_cost,v2_lens_fact_density,v2_extdeps_languages_llvm_ir,std_algebra,std_computation,lib.rs,emitted_population; deletedstd_magnitude,v2_std_nat. One file outside the by-name list:std_measure-- all 134 changed lines are type arguments spelledNatwhere main spelledi64(pub type Nat = i64, same Rust type). Before the operator repair six further files differed; they are gone.gunbc compileper root, keyed (module, message) with positions stripped): base main8a44bcb685vs head366b7aae70: 64 blocking errors on both, 62 distinct keys, new 0, gone 0; peak RSS 38.20 vs 38.35 GB. Advisory diff:nat_cata's two advisories moved fromv2.std.nattostd.nat(not new);witness_row_cost's unlistedv2.std.nat.Natuse is gone;fact_density's new unlistedstd.nat.Natuse is fixed (importsNat). Re-run at head4349b1f22d9(operator repair) vs based7f4da974c7: 64 blocking on both, new 0, gone 0; peak RSS 38.40 vs 38.48 GB; advisories 38,111 -> 38,116, exactly thenat_catamove plus threeunlisted import useadvisories gone. One advisory is new and is this PR's:gunbc.kernel_grounding_interpreter_seed_growthreportswhere-refinement unenforced: Brand on RoadmapNodeId(its roadmap-node field; advisory, deferred refinement).w_literal_at_native_boundary_stays_direct(base emits the samev1_rt::int_add(a.clone(), 2)).Specimen D (census rows the cut was to dissolve; before = base census, after = head
366b7aa)gunbc.fleet_runner_connectivityslot_indices_for_managed_widthgunbc.fleet_show_effective_readoom_pressure_limit_converge_verdictstd.nat::Nat, i64, Agreesgunbc.fleet_show_effective_readslice_property_memory_max_verdictstd.nat::Nat, i64, Agreesgunbc.floor_materializationfloor_typecheck_store_persist_cap_bytesstd.nat::Nat, i64, Agreesgunbc.machine_intake_host_resource_observationhas_duplicategunbc.runner_slot_allocationhost_fleet_slot_indicesgunbc.runner_unit_live_readmemory_limit_converge_verdictstd.nat::Nat, i64, Agreesgunbc.runner_unit_live_readrunner_unit_memory_max_drifts_against_capstd.nat::Nat, i64, Agreesgunbc.runner_unit_live_readrunner_unit_usage_exceeds_bytesstd.nat::Nat, i64, Agreesgunbc.spark.serving_rank_observerank_nccl_gpu_direct_devicesgunbc.spark.v41_capacity_measurementv41_measurement_ranksgunbc.spark.v41_capacity_measurementv41_staircase_concurrenciestest.claim.emission_entry_instrument_witnessemit_capture_windowstd.nat::Nat, i64, Agreestest.claim.memory_scale_factor_derivationfactor_isstd.nat::Nat, i64, Agreestest.claim.realization_scale_agnosticmillistd.nat::Nat, i64, Agreestest.claim.spark.v41_engram_file_backed_witnessw_offsetstest.claim.spark.v41_published_row_store_witnessw_candidate_layerstest.claim.spark.v41_published_row_store_witnessw_storestest.claim.time_scale_factor_derivationfactor_isstd.nat::Nat, i64, Agreesv2.lens.fact_densityconnective_spec_factstd.nat::Nat, i64, Agreesv2.lens.fact_densitydensity_factstd.nat::Nat, i64, Agreesv2.lens.fact_densitynamed_fact_countstd.nat::Nat, i64, Agrees13 dissolved. The 9 that persist are not Nat-specific: the declaration reader resolves the reference to the referring module itself, and the same head census has 66 rows of that shape over
List,ObservationAttemptandShowEffectiveRead.Floor capacity (measured, not this PR's to fix)
The floor's terminal-ledger compile stalled with
MemoryStallRefusedPageThrashon 4 of 6 runs (srv4-02, srv4-03, srv3-08, srv3-13) and passed on rerun. Cause is subject width: editingstd.natwidens strict preparation to 4064 modules (26 min) against 2309 (10 min) on a typical PR, witness sites 10077 against 1141; the ledger then typechecks beside that resident state under a 25 GiBmemory.highwith no swap. Not a compiler regression: the ledger entry compiled alone peaks at 10.2 GB on main and 10.3 GB on head. Parent ruling: rerun until green; capacity routed to neat-boar-16.Latent defects the wider floor subject surfaced (fixed here or by main)
floor_preparation_shared_build_witness_test(missingCrossClaimPureProducerWarmarm),citation_cit0_witness_test(optional selector),build_cache_placement_observation_test(ambiguousplacement_verdict),build_cache_endpoint_path_test(untyped state list),llm_attempt_receipt_witness_test(TokenThroughput literal), bareFilesysteminharness_cli,harness_turn,repository_load,repository_save, bareUnitinsystemd_property_directive_overlap.Findings to review
i64orNatby position. Same Rust type; emitted bytes change outside the by-name list (std_measure, above). Two emitted-bytes claims were updated to the new spelling with their subjects kept.w_qualified_type_reference_qualifier_disambiguates_the_leafdepended on two corpus declarations spelledNat; with one it exercises the unambiguous route only, as its comment says.Int->Natcrossing (std.coerciongrounded_primitive_coproduct_identitiesInt->Nat row) admits a negative Int at a Nat position unchecked;Nat - Natis typedInt(dag_subtraction_refinement), so the -1 is correct and the crossing is the defect. Rostered asthe_checker_admits_a_cast_the_evaluator_refuses; follow-up work itemadhoc-556faf74-a06was scoped and closed unstarted at wind-down (admitting sitev1.compiler.inferkernel_value_declared_type_mismatch_boundedviadag_can_cast; key the refusal onstd.nat::Nat's DeclarationRef; keep nonnegative literals admitted).eval_match's new host-integer refusal exemptsPresent/Absent/Some/None/Holds/Violatesby name, so a user type with a variant spelledSomeskips the new check. It only narrows a refusal main does not have (nothing is less safe than main); keying it on the optional/witness declarations is more hand-written seed growth, andgunbc.kernel_grounding_interpreter_seed_growth's trigger already forbids widening the list.eval_matchnever evaluates match-arm guards.Please don't merge without the operator.
🤖 Generated with Claude Code
Landing round (swift-ram-239, 2026-10-02)
first_generation_equal=true, 161/161 adjudicated). The crate partition and the defork audit were regenerated throughmain_wet.std.algebraalgebra_profile_admits_numeralhad no arm for this PR'sOrderedSemiringProfile, so the match was non-exhaustive and the regen refused. It now answerstrue: a non-negative numeral names the image of a natural under the unique semiring homomorphism out of the naturals.path::fn; NFR census roster: #12610's joint landing (delete the text scan; roster 915 typed-census sites) #12980 was built from the whole-corpus census at mainca5ed1724b, and it is now on main. Nat de-fork: one Peano Nat in std.nat, realized as the host integer (binding + cut) #12846 adds no roster rows.is_zero,nat_lteandnat_gteare deleted fromstd.nat: they were one-line nicknames for host comparisons, carried over fromv2.std.nat.nat_lte's two callers (v2.lens.cost.expr,v2.lens.cost.valuation) now write<=, and the agreement witness assertsagreement_three() != 0.std_natcompiler tests are generated from.dag(v1.compiler.compiler_tests_rustct_std_nat_realization_agreement_test,ct_std_nat_operators_refuse_overflow_test); they are not hand-written Rust. The hand-written seed growth is limited to the interpreter arms rostered asgunbc.kernel_grounding_interpreter_seed_growth, which carries its reason and trigger. Deleted in exchange:std.magnitude, itsstd_magnitude.rsmirror and partition row, and the Numeric-tower grounding: ground Nat construction-side so native form == modeled form (§0) #5428 spelling-keyedZero/Succinterpreter arms.