WIP haskell resolve packs — STAGING (parity decision needed, do not merge) - #411
Draft
Disentinel wants to merge 1 commit into
Draft
WIP haskell resolve packs — STAGING (parity decision needed, do not merge)#411Disentinel wants to merge 1 commit into
Disentinel wants to merge 1 commit into
Conversation
… pending)
Four adversarially-reviewed derive packs replacing the native haskell-resolve
arms (imports / local-calls / cross-module-calls / local-refs). Authored and
LIVE-measured against the dogfood graph; NOT wired into STDLIB_PACKS or
STDLIB_RULE_PACKS, so they are inert dead files — graph output is unchanged and
the cross-registry uniformity test still passes.
Why staged, not activated: unlike js/rust (which reached EXACT differential
parity — 679/679, 7800/7800 → 0 — before native was retired), these packs are
documented SUPERSETS of the native resolver:
- haskell_local_refs : pack 117,400 vs native 16,934 (Δ dominated by
scope-incorrect PARAMETER name-multiplicity)
- haskell_imports ArmA: pack 3,090 vs native 814 (duplicate MODULE.name)
- haskell_cross_module: pack 6,782 vs native 1,618
In every arm pack ⊇ native with ZERO native-only rows (full coverage), but
the extra rows come from set-semantics deriving ALL same-(file,name)
candidates where the native resolver's Map.fromList kept ONE arbitrary
winner — a choice set-semantics Datalog cannot replicate.
Decision required before activation (do NOT merge as-is): accept the superset
(more coverage, less scope-precision) as the haskell graph, or hold for a
scope-edge precision pass. Globals/prelude arm is also deferred (wave-2).
Co-Authored-By: Claude Opus 4.8 (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.
Status: DRAFT — decision artifact, do not merge as-is
Four adversarially-reviewed
derivepacks that replace the nativehaskell-resolvearms (imports / local-calls / cross-module-calls / local-refs). Inert in this PR: not wired intoSTDLIB_PACKS(rfdb) orSTDLIB_RULE_PACKS(orchestrator), so graph output is unchanged and the cross-registry uniformity test passes. This banks the validated authoring work and surfaces the activation decision.The decision
js/rust reached exact differential parity (679/679, 7800/7800 → 0) before native was retired. These haskell packs are documented supersets of native, with zero native-only rows (full coverage) but extra rows:
The superset is intrinsic: native precision comes from
Map.fromListkeeping one arbitrary winner per(file,name); set-semantics Datalog derives all same-(file,name)candidates and cannot replicate an insertion-order winner. Neither is scope-correct (proper scope resolution needs SCOPE edges, outside this resolver's contract) — native just emits fewer, arbitrarily-chosen edges.Choose before activation:
haskell-globalsnative.Globals/prelude arm is deferred to a wave-2 pack regardless (the
HASKELL_GLOBAL::minter).Each pack's header carries the full per-arm delta accounting and live-query evidence.