Repository navigation
NFR census roster: #12610's joint landing (delete the text scan; roster 915 typed-census sites) - #12980
Merged
Conversation
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…laims_test imports its live-tree disposition Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…ce (AmbiguousBareNameRead once the roster's row subjects bring bash_command_fold into scope) Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…odies
The required floor runs typed_collect_wildcard_arms (and fac_walk_body_marks under
it) on the main thread; native recursion over corpus-shaped body depth overflowed
the stack on gunbc#12526's widened diff scope ('main' has overflowed its stack,
right after strict-preparation, twice). Visit order is immaterial: facts and
undetermined sites are sorted by the caller and marks are booleans.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…owed its main thread in the non-fold-residue diff) Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…iew 74146) Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…'s verdict call on an 8 MiB thread 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
github-merge-queue
Bot
removed this pull request from the merge queue due to a conflict with the base branch
Oct 2, 2026
…s, drop the stacker blocks Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…roster 8 sites that landed after it Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
gunbai-bot Bot
pushed a commit
that referenced
this pull request
Oct 2, 2026
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
gunbai-bot Bot
pushed a commit
that referenced
this pull request
Oct 2, 2026
…p 5 more std.string_type imports main added (playwright, gcp, gcp/sts, tailscale/acl_api, rfc3339 string_lex_compare -> host <); stage0 infer mirrors taken from main pending regen Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
gunbai-bot Bot
pushed a commit
that referenced
this pull request
Oct 2, 2026
#12987) Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
gunbai-bot Bot
pushed a commit
that referenced
this pull request
Oct 2, 2026
….std.logic Bool 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 2, 2026
- non_fold_residue roster: main's census roster replaces the stopgap rows; drop the row for target_transform_positional_operand_binding_atom, which stays enumerated here - target_model: keep the enumerated arms, with main's local-reference-leaf behaviour in the shared otherwise helper - 03_resolve, 04_infer, 05_eval: main's frame binders, deleted scope search and lexical callee check - bare-provider debt roster: main's dispositions (the three body_lowering tests still read SubstrateInputsOnly bare) - generated mirrors from main; regen follows Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
briansrls
pushed a commit
that referenced
this pull request
Oct 2, 2026
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
gunbai-bot Bot
pushed a commit
that referenced
this pull request
Oct 2, 2026
…ors, regen follows Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
briansrls
pushed a commit
that referenced
this pull request
Oct 2, 2026
… arms, rostered #12980 armed the typed census on main; the live line's wildcard arms predate it. Each gets its own row under nfr_reason_landed_with_the_live_line with the owning-fold dissolution, as main did for the arms that landed during its review; the stale roadmap_standings_read row is deleted. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
gunbai-bot Bot
pushed a commit
that referenced
this pull request
Oct 2, 2026
…at is not a sweep Main's typed non-fold-residue census (#12980) refuses a top-level wildcard over a closed coproduct without a row. Fifteen of this lane's sites matched NodeKind (two variants), so their wildcard is now the two explicit variant arms -- construction rather than a roster row; infer_coproduct_arm_pattern's multi-line remainder moved into infer_coproduct_arm_pattern_constructed so both arms call it. eval_field_projection_of_receiver matches RuntimeValue, where RuntimeAggregate is the only field-bearing variant and every other refuses identically, so it is rostered with its reason and dissolution. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
gunbai-bot Bot
pushed a commit
that referenced
this pull request
Oct 2, 2026
…tale #12980 rostered the two host_effect_realize wildcard sites against main, where they still existed; this branch totals both matches by naming every HostEffectTransport variant, and the floor deletes a row whose site no longer carries a wildcard. Both rows named observe_slot_population_over_ host_effect_transport and srv3_dpkg_package_installed with the typed- census reason and the owning-fold dissolution.
gunbai-bot Bot
pushed a commit
that referenced
this pull request
Oct 2, 2026
…tale #12980 rostered the two host_effect_realize wildcard sites against main, where they still existed; this branch totals both matches by naming every HostEffectTransport variant, and the floor deletes a row whose site no longer carries a wildcard. Both rows named observe_slot_population_over_ host_effect_transport and srv3_dpkg_package_installed with the typed- census reason and the owning-fold dissolution.
gunbai-bot Bot
pushed a commit
that referenced
this pull request
Oct 2, 2026
…tale #12980 rostered the two host_effect_realize wildcard sites against main, where they still existed; this branch totals both matches by naming every HostEffectTransport variant, and the floor deletes a row whose site no longer carries a wildcard. Both rows named observe_slot_population_over_ host_effect_transport and srv3_dpkg_package_installed with the typed- census reason and the owning-fold dissolution.
gunbai-bot Bot
pushed a commit
that referenced
this pull request
Oct 3, 2026
…sence-establishment conversion
gunbai-bot Bot
pushed a commit
that referenced
this pull request
Oct 3, 2026
The composed run refused NonFoldResidueRosterDiverged stale=1: main's NFR census (#12980) added a FrontierRow for dag/gunbc/instruments/merge_admission_walk.dag::merge_target_refresh, but this PR's change already totalled that fold -- all six MergeAdmissionVerdict arms are spelled, no wildcard arm, so no non-fold residue exists for the subject and the roster row is stale on the composed tree. The row is deleted; roster and residue agree again. manifest_overlay_resolved was checked too: main added no row for it, and its three arms are totalled here, so nothing to delete there.
gunbai-bot Bot
pushed a commit
that referenced
this pull request
Oct 3, 2026
…Rows for sites this PR totals; roster qualified_name.dag::qn_fold_step (new refusal arms)
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.
#12610 landed the typed, diff-scoped non-fold-residue check on the required floor without the joint landing its own description required. That landing was the census-derived roster plus deletion of the old parameter-keyed text scan. Since then, every PR that touches a module carrying an unrostered closed-coproduct wildcard has been refused (#12951 hit 71). This PR is that joint landing, done as one cut at the root (DESIGN §3).
Deleted (the old scan and everything that answered through it)
cli_run.rsnfr_residue_sites,NonFoldReport,nfr_build_report, and thenfr_testscases that exercised it, includingnfr_roster_receipt. The roster-reader tests in that module stay.non_fold_residue_{count,unrostered_count,stale_roster_count,coproduct_universe_count}.non_fold_residue_{wildcard_red_fixture_holds,total_fold_green_fixture_holds,roster_red_fixture_holds,synthetic_unrostered_red_holds}.std.primitives,v1.compiler.method(04_method),gunbc.v1.v1_interpreter_primitive_surface,gunbc.primitive_egress.dispositions_hosts, the interpreter arms, and the regenerated dispatch and signature mirrors.v2.lens.non_fold_residue, itsNonFoldResiduelens id, its registry entry, its module-gate arm, its contract, and its twosg_claims_testlist entries.test.claim.non_fold_residue_witnessandv2.test.lens_non_fold_residue.non_fold_residue_test. Their rows infloor_expected_red,floor_cost_debtand thecommit_workflowenrolment go with them.gunbc.guarantee_stall.non_fold_residue_roster_stall. Its trigger was "the derived unrostered and stale populations are both empty", which is what this PR establishes.Kept on purpose:
declined_live_tree_defect_classificationstill names the deleted claim. It is one of a fixed, externally routed population of 13, which its witness asserts.reference_conservation_censusstill lists the deleted files. It is a sample pinned to revision 8fcd8e7.nfr_closed_coproduct_names) stays. The complexity-linearity audit and the fallback-arm census still key on it. Declared frontier: both audits read closedness from the type's text rather than the checker's result. That is the same defect class NFR: typed, diff-scoped non-fold-residue check on the required floor (D) #12610 fixed for this walk; the trigger is the audits moving ontotyped_scrutinee_closedness.One fix inside #12610's walk
non_fold_residue_roster_diff_withcounted a roster row stale whenever its site was not a closed-coproduct site. An UNDETERMINED site, a wildcard whose scrutinee the v1 checker leaves untyped, never is one. The floor also refuses an undetermined site unless a row names it (undetermined_unrostered). So both dispositions refused, and no PR touching those modules could pass;03_resolveis among them. A rostered undetermined site is now not stale.New control
rostered_undetermined_site_is_not_stale, with a red half: a row for a non-site in the same covered module stays stale. This is §6b's earliest unjustified link: the stale definition contradicted the verdict that demands the row.The 13 undetermined sites: decided, all residue (9 new rows)
All 13 are a
matchon<n>.kindfor a v2.std.nodeNode, with a wildcard arm..kindisNodeKind = TypeNode | ComputationNode, a closed coproduct, and each wildcard answers for the constructors and connectives the match does not name. Four of them (resolve_expected_head_node_optional,fold_recurrence_loop,pattern_head_identity_optional,export_signature_declared_arrow) are in functions that also carry a closed wildcard, so their census row (keyed by function) already covers them. The other nine are rostered undernfr_reason_typed_census_undetermined_node_kind. That reason says the reading was made by hand: a bet the re-census confirms once the checker types the field.src/v2/compiler/03_resolve.dag::resolve_expected_head_node_optionalsrc/v2/compiler/fold_lowering.dag::fold_recurrence_loopsrc/v2/extdeps/runtimes/v2_evaluator.dag::v2_eval_transform_is_int_addsrc/v2/lens/undecidable_verdict_collapse.dag::pattern_head_identity_optionalsrc/v2/lens/vacuity.dag::vacuity_transform_operator_symbol_optionalsrc/v2/std/compilers/target_model.dag::arrow_domain_binder_namessrc/v2/std/compilers/target_model.dag::target_project_bind_tailsrc/v2/std/decl_index.dag::export_signature_declared_arrowsrc/v2/workflow/bash_command_fold_serialize.dag: five sites,bash_fold_built_stmt_production_binding,bash_fold_serialize_assign_node,bash_fold_serialize_exit_node,bash_fold_serialize_with_redir_nodeandbash_fold_serialize_word_nodeThe roster: 185 → 1109 rows (915 census + 9 undetermined)
The census is
nfr_whole_corpus_typed_census, run on srv1 at main ca5ed17 on 2026-10-02 (2165 s, 43.0 GB peak). Its summary line:sources=7270 typed_modules=4571 wildcard_arms=1682 residue_sites=1100 unrostered=915 stale=0 undetermined=13 blocked_diagnostics=74. The output is on branchartifact/nfr-census-ca5ed1724b, pathartifacts/nfr-census-ca5ed1724b.txt; that branch is an artifact only.All 915 rows carry
nfr_reason_typed_census_ca5ed1724bandnfr_dissolve_owning_fold. They are un-migrated modeling that predates the typed walk; the walk sees local-binding, field and call scrutinees the deleted scan could not. Rows are sorted by path.Uncounted population. The 74 blocking diagnostics fall in 21 modules, and 16 more modules were typed only partially. Every one of these is a test probe, fixture or manual test (
test.probe.*,v2.test.*,test.claim.srv3_websocat_sequence_witness). The walk skips test modules, so no residue site the roster governs is uncounted. Trigger: a NON-test module carrying a blocking diagnostic in a future census is uncounted, and its sites are judged when it types.Stopgap rows. The stopgap rows on #12951 (
nfr_reason_landed_after_census_unit_lane_nonblocking) never reached main. #12951 drops them for these rows when it next merges main.Rows by owning module (915)
270 modules
Evidence
--lib --tests -D warnings) and the NFR, roster and non-fold-residue unit tests: clippy clean; 75 passed, 0 failed (5 ignored, the census among them).nfr_whole_corpus_typed_censusat 65161a8; the only change since then is removing the straytargetsymlink in afdd827, and later commits touch only imports and debt rows): rc=0, 2165 s, peak 43.1 GB.summary sources=7266 typed_modules=4569 wildcard_arms=1681 residue_sites=1100 unrostered=0 stale=0 undetermined=13 blocked_diagnostics=74Before this PR, at main ca5ed17, it was unrostered=915 stale=0. The 13 undetermined lines are all rostered: 9 by their own rows, 4 by their function's census row. The 74 blocked and 16 partial modules are unchanged.
🤖 Generated with Claude Code