Skip to content

WIP: preserve generic application identity in inhabitance checks - #10569

Closed
gunbai-bot[bot] wants to merge 6 commits into
mainfrom
session/vivid-ferret-153
Closed

gunbai-bot[bot] wants to merge 6 commits into
mainfrom
session/vivid-ferret-153

Conversation

@gunbai-bot

@gunbai-bot gunbai-bot Bot commented Sep 5, 2026 •

Copy link
Copy Markdown
Contributor

Work in progress for dashboard node adhoc-0a02fa3a-821. This draft was opened automatically from the implementation checkpoint; it is not ready for review or merge.

The callable guard mistakes generic type parameters for function parameters. Correcting it to recognize Arrow lets the existing structured mismatch judgment reject Out<Int>/Other. That shared correction also exposes valid product-alias false refusals, so the implementation carries declaration-bound owner and argument facts to the existing inhabitance judgment. These are separate causal paths: the motivating coproduct is repaired by the guard; product routing repairs collateral alias comparisons.

Current checkpoints include the additive std.type_application carrier, authored formal/field capture, bare-marker checks, and regression fixtures. The latest source represents nongeneric projection bases at arity zero while keeping conformance routing generic-only. The first bootstrap regeneration now includes these source changes; convergence and final semantic evidence remain pending. No hand-edited probe mirror is an implementation artifact.

Validation so far is exploratory, not final acceptance: ref-bound baseline 03a3b91fb4c1 admits the foreign constructor and rejects the monomorphic control. Generated optional-carrier probe 87880de7-9bd7-45db-87dd-5df73f30beae rejects the foreign constructor, accepts Acc, and distinguishes cross-module homonyms. Later throwaway probes isolate formal/field syntax loss and recursive alias identity; they do not establish the shipped artifact. The arity-zero probe 26493831-ccf5-42fb-bdc9-e064508e05b8 passes output-policy admission and retains Out/Other refusal and Acc acceptance.

Remaining before ready: complete recursive argument identity and its bounded typed refusals; consume the modeled cycle/projection outcomes; verify valid generic calls acquire no unintended advisories; complete bootstrap convergence, including byte-for-byte reproduction of the interpreted root by the compiled emitter; execute final controls, deletion mutations and relevant corpus checks on one final tree; update failure-mode rungs to match that evidence. Equivalent nested aliases still falsely refuse in the old-comparator probe.

Three independent findings are recorded in #10567 (parser limitation, general alias-head cycles, and unit-variant generic argument identity). They remain separate from this implementation. The unit-variant population is not claimed repaired here. The #10473 compensation is retained; its later deletion requires independent refusal, a combined-tree deletion mutation, and coverage of every population it currently protects.
Rebase checkpoint c2bb5a61563080d04b0c40e260260dc5306bb009 includes main 1001fd03c74. Actual archived-seed generation 802f9c68 produced the nine installed changed mirrors (158 surfaces adjudicated). The current root producer was interpreted against the emitted-population manifest, and the resulting tree built all three release binaries successfully in 23e02049. No generated Rust was hand-edited. This is bootstrap/build evidence, not convergence or final semantic acceptance. The PR remains draft.

Declared return positions remain an explicit open boundary: wrap<T>() -> Out<T> { Zed { q: 1 } } is still accepted in the measured probe. The retained return-boundary witness names that defect; the discriminating payload control uses Holder<T>.r: Out<T> instead. No generic-return wall is claimed.

@gunbai-bot gunbai-bot Bot changed the title FLOOR: a generic position admits a constructor from an unrelated type - build variant-membership judgment at generic positions WIP: preserve generic application identity in inhabitance checks Sep 5, 2026
@gunbai-bot
gunbai-bot Bot force-pushed the session/vivid-ferret-153 branch from c2bb5a6 to 4bff996 Compare September 5, 2026 15:19
gunbc-ci-auto-heal added 6 commits September 5, 2026 16:49
Not ready for merge: generated mirrors predate the latest source changes; equal argument aliases and one field-projection false refusal remain. Three-way cycle outcome is modeled but not yet consumed. Preserve this investigation before further integration; no completed floor guarantee is claimed.
Correct product-member accessor and represent nongeneric bases at arity zero. Add regression fixtures. Generated mirrors remain pending; recursive alias comparison and typed outcome consumers are unfinished. This is a recoverable implementation checkpoint, not a merge-ready repair.
Record the measured capture population and preserve the first capture across unchanged rebinding inputs. Source checkpoint only: generated mirrors, recursive comparison and typed cycle consumers remain pending.
@gunbai-bot
gunbai-bot Bot force-pushed the session/vivid-ferret-153 branch from 2cb30b6 to 9522a1b Compare September 5, 2026 16:49
@gunbai-bot

gunbai-bot Bot commented Sep 7, 2026

Copy link
Copy Markdown
Contributor Author

Closing this draft. The branch session/vivid-ferret-153 is retained at 9522a1b29f and nothing here is discarded — this records the disposition so the work is findable rather than left as a stalled lane.

Why closed. The authoring session produced no turn after 2026-09-05 and is being archived. More substantially, the measurement this PR rests on was taken against a tree that no longer exists: declaration_substitution_basis stamped TypeVariable over concrete declared types whenever a local binding lookup missed, so roughly 8,400 positions never reached declared_type_inhabitance at all. #10727 repairs that at the producer, and those positions now arrive. This PR's body states that its callable-guard correction "exposes valid product-alias false refusals" and then compensates for them by carrying declaration-bound owner and argument facts into that same judgment — a compensation designed against the suppressed incoming state.

What should be salvaged, as its own small PR against post-#10727 main: the callable guard itself. type_node_is_callable testing params |> count > 0 conflates a generic declaration with a callable, against a model whose make_callable_type uses Arrow. That is a genuinely independent defect and I expect it to survive the root repair unchanged.

What should not be carried forward without re-deriving it: the owner/argument compensation, and any population figure in this body. #10727 plus its refinement closure now occupies that seam. Re-derive against the merged tree before defending any part of it — do not assume the compensation is still load-bearing, and do not assume it is dissolved either.

The std.type_application carrier is unassessed either way.

The three independent findings recorded in #10567 (parser limitation, general alias-head cycles, unit-variant generic argument identity) are unaffected by this closure.

@gunbai-bot gunbai-bot Bot closed this Sep 7, 2026
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.

0 participants