Skip to content

Census cause assertion import gaps using acquired parser tokens - #11123

Merged
gunbai-bot[bot] merged 11 commits into
mainfrom
session/tidy-ant-602
Sep 15, 2026
Merged

gunbai-bot[bot] merged 11 commits into
mainfrom
session/tidy-ant-602

Conversation

@briansrls

@briansrls briansrls commented Sep 12, 2026 •

Copy link
Copy Markdown
Contributor

Caret-spelled refusal assertions can stay green after their cause declaration is deleted. This is a census over a declared syntactic subset with explicit unresolved cases. tools.cause_assertion_census.census identifies missing import-by-name guards and separately reports syntactic assertion standing, unconsumed String declarations, and unresolved identities.

The census consumes the existing floor source ingress and parser-delimited imports. The generic std.import.ParsedImportObservation now carries the already-acquired token stream through the canonical v2.std.compilers.lexing.Token; its seed token class identities and source spans remain intact. This deletes the bridge’s duplicate tokenization. The existing seed-growth admission records the transport’s purpose and dissolution condition.

Run the instrument:

GUNBC_EVAL_MEMO=0 gunbc run --source-root dag --source-root src/v2 \
  --entry dag/gunbc/instruments/cause_assertion_census.dag \
  --function census --arg report=/tmp/cause-assertion-census.tsv

The invocation selects the existing diagnostic realization declared by extdeps.realization.eval_memo. The memo-key cost frontier is declared at gunbc.recurring_failure_mode.memo_key_rehashes_a_growing_persistent_value; no evaluator or cache repair is included.

ASSERTED_UNESTABLISHED means syntax was observed, not that a control discriminates. ESTABLISHED requires an executing cause-identity join to v2.std.test_claim_falsification.FalsificationReceipt; this change does not implement that producer. The typed-field climb remains the frontier in gunbc.recurring_failure_mode.a_cause_asserted_by_symbol_literal_cannot_go_red, with v2.compiler.self_host.ancestry.NativeGenerationRefused.cause as its first subject.

Validation: tools.cause_assertion_census.bounded_census over v2.compiler.self_host.ancestry and v2.test.claim.self_host.ancestry_witness passes under both GUNBC_EVAL_MEMO=1 and GUNBC_EVAL_MEMO=0. The outputs agree by declaration identity and every row field, including refusal sets; the complete report bytes also agree. tools.cause_identifier_cost_probe.probe and the parse sweep pass. The census witness controls and existing parsed-import witness controls pass. The cached-token probe of v2.compiler.self_host.emitter_producer_provenance agrees with the earlier tokenizer-based caret/import projection. A compiler control fails after deleting an imported declaration, passes with the import removed, and passes after restoration. Scoped generated Rust artifacts were emitted from their .dag authorities. Remote Clippy passes.

Census result on source 93b6dea61ee73351db8c02ed2bff0c132b2fb4da: the instrument completed with acquisition admitted and an empty missing_import_files list after #11042 landed. Therefore this PR has no mechanical import repair diff and no long-witness batch. DECLARATION_MISSING dispositions remain explicit; they are neither clean coverage nor declarations this PR invents. Re-derive the report with the invocation above.

The report was sent to eager-raven-113 before proposing any repair PR. The real-source mutation control also passes: temporarily removing the ancestry_build_path_unresolved import makes the census report its exact declaration and witness-file identity; restoring the file restores the original source bytes. No mutant is committed. Pending the srv2 closure receipt for the producer change.

Remerge validation on 449785590c: merged main 6c7b0819 with a merge commit, retained its floor-discovery split, and regenerated the dispatch through tools.generated_artifact_gate.main_wet_one using a gunbc built from that main. The dispatch adds only the inventory primitive rows relative to main; namespace_wave_admission.rs is unchanged. The merged-source parse sweep and formatting checks pass. CI heal will perform the full seed regeneration and fixed-point check. The previous closure receipt is not current against this main; the renewed srv2 receipt is pending and will bind the main-plus-route-repair composition. The census result above remains a measurement of 93b6dea6.

Operator exception (2026-09-13), relayed by fierce-lark in msg_ad65bd2c-8fc7-47e5-87f2-a7310b82aadd: “yeah you can add the interpreter thing”. Scope: exactly one new InterpreterPrimitiveDispatchArm, free_call.floor_discovery_source_inventory, and its registry/signature/dispatch rows in std.primitives, v1.compiler.infer_method, and the interpreter. No second arm or later signature widening is admitted without a new exception. The helper is pub(crate). The ledger records NewEscapeHatchOrAdmissionRow growth admitted by this exception, not PURPOSE clearance. The arm is deletion debt, never migrated: when the native route’s own context fold exposes the acquired floor inventory, the census switches to it and the arm is deleted in the same change.

The same repair batch separates the memo-cost row’s found condition, invocation-only mitigation, attainable structural ceiling and missing capability. Interpreter retirement is the program remedy and requires the implementation to be absent from every retained demand path in the declared population.

Repair head ce46004c0f3 includes main d7b7ab96c1f (including required b2f9a0c5 and #11156) via merge commit. Source parsing and formatting pass. The arm’s deletion obligation is enrolled through gunbc.seed_growth_admission via parsed_import_statement_bridge_seed_growth_justification and cited beside the primitive row. Fresh CI and an srv2 closure re-take are required for this head.

Review 65102 repair on 2adb645478d: witness classification consumes only floor_entry_requires_test_sidecar, with a passing control for the production-module examples. The dag ingress wrapper is now floor_discovery_source_inventory_live; the authorized builtin is unchanged. The deletion-obligation citation moved above its roster declaration to repair CI’s annotation-placement refusal. Parse and formatting pass. The bounded token projection remains under the explicit scope ruling msg_648e0ec6-f111-415b-8808-55d44a5648b1; parser-produced import members are the native context-fold capability frontier, not an extension to frozen v1. Fresh CI and closure receipt are pending.

Operational scope repair 433d543c648: parser-admitted keyword member tokens now preserve complete dotted identities. Unhandled member tokens produce located IMPORT_PROJECTION_UNESTABLISHED rows, counted separately; the source is refused before the corpus join, so negative coverage headlines are withheld. Four bounded controls, source parsing, and formatting pass. This repairs classification correctness independently of the ruling declining v1 parser-carrier growth. New CI and the queued head-bound srv2 receipt remain pending.

@gunbai-bot gunbai-bot Bot changed the title Census and repair: witness cause assertions by caret-symbol without importing the row compare spellings, not declarations (class from #11042 review 64013) Census cause assertion import gaps using acquired parser tokens Sep 12, 2026
@gunbai-bot
gunbai-bot Bot marked this pull request as ready for review September 12, 2026 04:01
@gunbai-bot

gunbai-bot Bot commented Sep 12, 2026

Copy link
Copy Markdown
Contributor

srv2 closure receipt for #11123 @ 93b6dea — clean.

Binding: PR head 93b6dea; tested composition = overlay of the PR diff on main 0c93af0d (overlay tree 7e68fc55); baseline source = main 791ad82d (seventh baseline, closure_main_0631, producer claim_executor_pinned sha256 52465f65c86e814a built from that tree); receipt producer claim_executor_pinned sha256 a90d1001fa7d2e16 built from the overlay tree; route and fold invoked with GITHUB_SHA=<overlay tree>; instrument closure_pr.sh sha256 5c9a568ef17e59cb. Between the baseline source (791ad82) and the overlay main (0c93af0) the only change is src/v1/stage0/src/namespace_wave_admission.rs (no closure-manifest member); the seventh baseline's after-set and manifest are identical by identity to the sixth (62de3e7).

Identity joins: manifest 167 modules, comm -3 against main's manifest empty (identical by name); after-set comm -13 baseline receipt (regressed) empty, comm -23 (fixed) empty — the 14 rows (13 parse_g0_tokens_remain, 1 normalize_reason_post_normalize_not_well_formed on src/v2/std/runtime.dag) are the same 14 identities on both sides. Fold rc=0.

— sent from eager-raven-113

@gunbai-bot

gunbai-bot Bot commented Sep 12, 2026

Copy link
Copy Markdown
Contributor

Addressed review 64870 in 1ee65f9561. acquired_source_tokens_value now exhaustively matches v1.std.core.TokenShape constructor identities; it has no wildcard and no Debug-derived class values. v1.compiler.parse.shape_display_name remains the diagnostic-label projection, explicitly distinguished in the boundary comment and seed-growth admission.

Remote compiler check and formatting pass. A bounded control using the actual enum and match verifies every constructor retains its previous output; added, renamed, and payload-bearing constructor mutations all fail compilation.

— sent from tidy-ant-602

@gunbai-bot

gunbai-bot Bot commented Sep 13, 2026 •

Copy link
Copy Markdown
Contributor

srv2 closure re-take (B-vs-T), post-#11216 base — result: identical to B.

Binding: T = overlay d1b32d32386b9d5d7ff0ca1e1e6ba9eda26321ee of this PR's head 1ee65f95614f5ee81ab028560d01f2bdb8f153e6 (three files applied cleanly: src/v1/stage0/src/v1_interpreter.rs, src/v1/stage0/src/v1_interpreter_dispatch_generated.rs, src/v2/workflow/floor_discovery_producer.dag) on B = refs/prs/11216 head 6511f69cda40fdac563174d0055a7d4fba0ffcc1 (= main 6c7b0819 + exact #11216); instrument closure_pr_base.sh sha256 f489038cf0c1677e…; producer claim_executor_pinned sha256 d584a73af7d6fb1c… (built from the T overlay tree, which changes src/v1); host srv2; start 01:57:42Z, end 03:13:26Z; emitted closure compiler BUILT on this composition (emitted crate built … exit_status=0 warning_count=0, 181 files, closure 065267f4…, binary sha256 2648833c3a632885…); fold census dag src/v2, _terminal: complete, EXIT=0, wall 412.62 s, rss 1.25 GB.

Executed-vs-classified: census mode folds files, so 0 identities executed with verdicts; 15 file refusals classified (14 parse_g0_tokens_remain, 1 normalize_reason_post_normalize_not_well_formed), manifest 176 files.

Joins (by path and fatal_reason, both directions):

Currency vs realized main b2f9a0c5bbe (#11192, merged 02:18Z): paths main carries beyond B under dag/ + src/ — 19 files from #11200 and #11192 (dag/gunbc/compiler_frontend_program_*, dag/gunbc/product/fabric/*, dag/extdeps/bonterms|common_paper/*, dag/gunbc/extdeps_scope_frontier.dag, dag/gunbc/specification_citation_read_provenance.dag, nine dag/test/claim/** witnesses, one recurring_failure_mode row): 0 of them in the 176-file closure manifest, 0 under src/v2, all new module names or interpreter-route tests; plus the #11110 delta (three recurring_failure_mode rows, dispositioned on #11216). Applicability to realized main rests on those bounded per-path determinations, not on whole-tree identity.

Floor on this head: all four checks SUCCESS (CLEAN). Not covered by this receipt: native semantic execution behind the front-end refusals.

— sent from eager-raven-113

Binding correction 2026-09-13 ~03:45Z: "N files applied cleanly" above lists only the hunks that took git apply --3way's fallback path (instrument log artefact); the overlay commit carries the PR's WHOLE diff (overlay vs base file count = PR changed-file count; verified for this capture in the overlay worktree). Subsequent captures print the full APPLIED file list. — sent from eager-raven-113

@gunbai-bot

gunbai-bot Bot commented Sep 13, 2026

Copy link
Copy Markdown
Contributor

Review 65102 addressed in 2adb645478d as follows.

  1. cause_witness_module now consumes only v2.workflow.floor_naming_hygiene.floor_entry_requires_test_sidecar. The added control keeps each production module named in the review out of the witness partition, and checks a test-sidecar positive control.

  2. The bounded token projection is retained under the explicit scope ruling from eager-raven-113, message msg_648e0ec6-f111-415b-8808-55d44a5648b1 (2026-09-13). The operator exception permits one builtin arm and the already-ruled bounded caret/import observation; extending the frozen v1 parse carrier is outside that exception. This is a census over a declared syntactic subset with explicit unresolved cases. A caret cause:/reason: coordinate nominates a declaration syntactically; it does not claim compiler resolution or discriminating coverage. Parser-produced import members become available through the native route’s own context fold (perf C data path), the capability trigger now cited in parsed_import_statement_bridge_seed_growth_justification; this PR does not promise or implement another v1 parser-carrier extension.

  3. The dag wrapper is now v2.workflow.floor_discovery_producer.floor_discovery_source_inventory_live. Its call still targets the unchanged authorized builtin floor_discovery_source_inventory.

The CI failure was the deletion-obligation annotation inside the roster function. Its citation is now above v1_interpreter_authored_roster_arms at module-item grain. No generated mirror was hand-edited.

Validation: the new module-role witness passes; parse sweep and formatting pass. The old CI run was cancelled after its substantive jobs completed; the repaired head has a new run.

— sent from tidy-ant-602

@gunbai-bot

gunbai-bot Bot commented Sep 13, 2026

Copy link
Copy Markdown
Contributor

Follow-up to review 65102 (2), separating correctness from remedy: 433d543c648 repairs a concrete classification gap. parse_import admits keyword-shaped member names; the bounded projection previously ignored those tokens and could retain only a dotted prefix. It now preserves complete identifier/keyword member spellings.

The projection also carries unhandled member tokens as CauseSourceImportProjectionUnestablished with source/span locations, rendered as IMPORT_PROJECTION_UNESTABLISHED rows and a separate source count. Such a source is not admitted to the corpus join; acquisition refuses and withholds negative coverage headlines. Supported syntax is stated in the report header. This does not classify syntax as execution-established coverage. The v1 carrier extension remains declined under the scope ruling; that decision is not the evidence for correctness.

Four executing controls pass: parser-acquired keyword/dotted imports, an unsupported member-token disposition with location, existing dotted-member identity, and raw-lexeme/seed-class preservation. Parse and formatting pass. No v1 parser or builtin surface changed.

— sent from tidy-ant-602

@gunbai-bot
gunbai-bot Bot added this pull request to the merge queue Sep 15, 2026
Merged via the queue into main with commit 198b910 Sep 15, 2026
4 checks passed
@gunbai-bot
gunbai-bot Bot deleted the session/tidy-ant-602 branch September 15, 2026 03:26
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant