Repository navigation
[DO NOT MERGE] native-seven integration candidate: pins and qualification record - #12628
gunbai-bot[bot] wants to merge 328 commits into
Conversation
…ssion/merry-hawk-532
…to MQ-1; imports keep #12208's std.algebra move Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…2240, #12245, #12234, ...) - import conflicts in body_lowering_fold / normalized_tree resolved to main's additions with the moved fns from std.algebra; the new v2.std.type_binder consumer repointed. - #12205: three files whose only v2.std.algebra import the list_append repoint removed still use v2.std.algebra names bare -- they now import them (cause_assertion_census {any, filter}, deployed_tree_scope {any}, floor_terminal_ledger_wire {filter}); body_producer_forward's three rostered pairs retire as ImportsFixed (the checker reports them stale after the import split). Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…ssion/merry-hawk-532
…ssion/merry-hawk-532
…oproduct it is (Variant by arm name), not a Record #12205's host read of unimported_bare_provider_roster_at_base destructured Value::Record, but the .dag declares BaseRosterShown | BaseRosterUnreadable, so the interpreter returns a Variant. The path runs only when a change EDITS the debt roster, and #12208 is the first to (retiring three body_producer_forward rows as ImportsFixed): the floor refused ChangedWitnessObservationFailed 'returned Variant(Symbol("BaseRosterShown")), expected UnimportedBareProviderBaseRoster'. Now matched by arm name, as this runner already decodes OpaqueHostCallSurface. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…ain's list_find_first with the moved fns from std.algebra; both RFM occurrence receipts kept Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…r function value (arrow_body_is_function_value_unmodeled), one site in body_lower_reify_arrow_body; a tail or sole-statement function value lowers through its producer Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…ssion/fierce-gull-556
…ts keep #12208's std.algebra home)
…ssion/merry-hawk-532
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…declaration <T> binders) landed and std_algebra_own_list_literals_bind_to_its_own_qualified_names now PASSES (floor stale_quarantine at 467c6f9) -- its dissolve-on condition Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
… multiplies work by enclosing-tree depth (held by review; hypothesis until counted) Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
… takes main's roster-variant decode; #12208's duplicate copy of that fix is dropped Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…e-provider gate) Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…ssion/merry-hawk-532
…e srv1 native attribution decides Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…ssion/merry-hawk-532
…erdicts, enrolled in floor_pure_producer_share (enrolment budget) Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…ssion/merry-hawk-532
…ssion/merry-hawk-532
…fold_list, fold_list_right and fold_node carry their declared positions The native census at 3c48b57 found node_query's fold(xs: .., init: .., f: ..) and seed_emitter_behavioral_wet_known_red_entries' fold_list(left, empty: .., cons: ..) refused as fold_lowering_operand_absent, each refusing its whole file. Controls: named_collection_fold_lowers and positional_collection_fold_list_lowers. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…ified pattern the native parser refuses The native census (base 81d292e vs head 46b8939) shows fold_encoding_test.dag as the only new file refusal (parse_g0_tokens_remain). fold_lowering_test, which uses the same v2.std.node.Absent pattern, refuses identically at base. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
The native census cost partition put the whole slowdown in the context phase: 918s at base 81d292e against 1892s at head ca11d5a, with every other phase flat. body_lower_is_pipe_tower_root, run at every node, reached the operator token through a roster fold several times per node. fold_family_realization, run at every call site, built collection_fold_shape() and compared lexemes. Now the pipe test compares token identity with ^dag_token_pipe_gt, and the collection fold head is interned once from its row's name (collection_fold_head). Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…word, and the native parser refuses it as a binder Located by a parse probe at dcfc5e9: parse_g0_tokens_remain at fold_encoding_test.dag bytes 4901..4905 and fold_lowering_test.dag bytes 8209..8213, both `Present { value: loop }`. This clears the one new native file refusal, and fold_lowering_test's refusal at base. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…ode ledger (gunbc#12550 specimens) Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Handoff from #12506 —
|
| boundary | before | now |
|---|---|---|
| match-arm binder receiver | blocked at the match form | infers (#12641); projection node present |
artifact.tree field projection |
unmodeled | resolve + infer + eval, valid/absent controls |
| named call execution | refused | executes, argument-dependent (3→3, 8→8) |
Bool-returning call / the true-false pair |
did not separate | separates |
invalid argument (Bool for Int) |
"did not ground" — vacuously | judged and refused |
Two boundaries were behind the old blocker, one masking the other:
-
The declaration was read from the wrong index. infer asked
symbol_index_lookupagainstResolvedTree.symbol_index— declarations as authored, whose return atom is the source spelling, whichdag_binding_denotationdoes not denote. Soinfer_arrow_declared_return_typeansweredAbsentand every named call's result typing fell to the frontier. Now readsresolved_declarations. -
A fail-open that mask was hiding.
infer_application_formal_argsused the facts-blind callee reader while its caller's formals came from the facts-aware one. A named call's callee is aConj, so the blind reader answeredAbsent, the function returned no formal/actual pairs, and the inhabitance fold over an empty list accepted unconditionally — every argument of every named call went unjudged. One reader now answers it for both; the blind one is deleted.
Two frontiers you will hit, stated rather than papered over
- Cross-module references do not ground. Resolve walks one module root, so
resolved_declarationsholds the subject module's declarations only. Both widening arms are refused — the authored-index fallback is the absorbing fallback §5 forbids and is the wrong answer v2 resolve/infer: the dotted-path decision keeps its binding kind, and projection inference stops calling an unretrievable declaration a fieldless receiver #12506 just removed; re-deriving from the language's spelling table inside infer is a second resolution authority (§3). Trigger: a resolved-declaration index over every resolved module root, minted by resolve. - A match-binder projection does not ground — valid field and absent field alike — so an absent field there is not refused. The parameter receiver grounds and does refuse its absent field; those are the discriminating controls.
Evidence
Four sets, 46 claims, zero red: field projection 16/16, reference evidence 9/9, named-call eval 10/10, match-binder typing 11/11. Four expecting-red rows flipped and stay enrolled as regression controls (§4b(4)).
Nothing here was run through the seed as evidence for a v2 property — the seven pass under the development runner both before and after, because that runner resolves them with the seed.
🤖 Generated with Claude Code
… threads main's resolved (as on the #12628 integration) Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
… resolved) Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
# Conflicts: # src/v2/compiler/04_infer.dag
…12782's Cons/Empty and S3's slot-scan names) Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…ain's explicit Cons/Empty) Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Review 73303 on #12809 (finding 2) flagged the pattern this PR introduced: each family arm matched a variant only to rebuild it for infer_gather_literal_payload_step. The gather now binds the family once, with one arm for InferNotALiteralPayload and one for every family (DESIGN section 2). Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…evel; #12582's refusal kept) Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
# Conflicts: # src/v2/extdeps/languages/dag.dag
…g.dag imports keep #12549's symbol_type_node) Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Handoff update from #12506 — now at
|
… type_declaration_kinds (main reshaped NormalizedTree) Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…_iteration_measure) Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Wall ledger update — the fold wall splits three ways, and two of them are closedNative runs of Receipt
Acceptance for the next integrated runPin the follow-up's head and require no selected member refuses at Resolve on What the run costs, since it gates every integration~19 min wall (three measured runs: 1179 s / 1146 s / 1116 s), plus ~7 min of binary rebuild whenever the seed moves — and every main merge today has moved it. Inside the driver's 210 s, context is 199 s (95%) — normalize 134 s, parse 39 s, tokenize 13 s over 134 closure modules — while Those last two are observations from the run's own instrument, not a diagnosis — but they are the dominant producer of every integrated run, so they are where a latency repair would pay. 🤖 Generated with Claude Code |
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
Do not merge. This is the pinned experimental integration branch for node adhoc-3e34606f-ffc (operator direction). It is built from PR HEADS, not landed main. Each member's changes land through its own PR. This description is the single record of the pins and of where each qualification run stops.
Qualification order: first the small combined set, run with
gunbc run --functionon a 28 GB runner. That isv2.test.claim.field_projection.field_projection_stages(15fps_*: projection valid/missing field, s3fn f(b: Box) -> Int { 7 }),v2.test.claim.reference_evidence.declaration_reference_evidence(9dre_*: reference typing), and when #12582 is in,sfk_*+fkc_*. Only if that set is all green, the seven:v2.test.parse.expression_bodied_fn_decl_parse, viaclaim_executor --v2-native-route.Runs
fps_the_int_field_grounds_as_an_int_parameter_doesplus 5 positivedre_*. The seven not run.sfk_*all false (infer refuses the cref fixture before its entries);fkc_*did not resolve (#12506'sInferredFacts.denotation). Runner killed before the route.denotation)fps_the_receiver_without_a_projection_infers, NEW). Native route refused at discovery:named_call_execution_test.dag(new on #12506,2702923a17b) declares notest fn. The seven were not reached. Small job killed aftersfk_the_shared_key_refuses_at_admission, sosfk_the_refusal_is_not_specific…andfkc_*did not run.gunbc test //v2/test/parse/expression_bodied_fn_decl_parse:all: all 7 unreached, becauseNativeRunFailedat discovery on #12506'snamed_call_execution_test.dag(notest fn). Interpreter (not native): 7/7 green.empty_eq_fn_decl_refuses_holdsis NOT counted as coverage: it asserts only that the parse is not accepted, so any refusal cause greens it.outcome=resolve_refused, eachresolve_reason_unbound_symbol @ <node occurrence #2071836 "tokenize">(a declared import ofv2.compiler.tokenize). Admission refused:positive_population_empty,required_native_pass_regressed,unattributed_file_refusals_present(13). Plain-main comparison pending.Attribution of the 6 red, by execution. All 6 are TRUE at #12506's own head
0cb200cd, and all 6 are FALSE onmain 178fb76c + #12506alone (bisect tree429ab450, branchsession/eager-newt-412-bisect-a). So the break is #12506 against current main, not #12432, #12420, #12549 or #12582. Routed to the #12506 lane: it needs a main merge.CURRENT PIN: 8ae6cd8 (#12686 re-pinned to floor-green 528f64b)
main + #12420
37ad055e3494+ #12549b9864258ae96+ #12582b4ccd301c875+ #12686538b13fe6e46(calm-fox-43,empty_eqExpect refusal; newer heads await green) + #12702054a440082cf(quiet-hawk-702, a refused import target is named) + #127148cb389401b93(lively-eagle-657, qualified variant construction; wall 1) + #12550bd6bd29782c5(deep-raven-602, fold step Arrow conserved; wall 3). EXCLUDED: #12506 (needs a current-main merge; wall 2) and #12641 (stacked on #12506).Coverage rule (quiet-gull-780). Any of the seven that goes green while
infer_match_scrutinee_type_underived(from #12641) fires on its match is recorded as green through the frontier, not coverage. Every run counts that advisory:grep -c infer_match_scrutinee_type_underivedover the native run output. It is 0 until #12641 is pinned (with #12506).Run 9 (8ae6cd8, the seven native): all 8 RED at resolve, now correctly attributed by #12702:
native_prepare_reason_import_target_file_refused @ src/v2/compiler/02_parse.dag (whole file) -> normalize_reason_post_normalize_not_well_formed @ 02_parse.dag. file_refusals=21, and02_parse.dagis refused at ingest. The module now has 8 decls (#12686 addsempty_eq_data_decl_refuses).infer_match_scrutinee_type_underivedcount: 0 (#12641 not pinned). Run 8 (9925c77, before #12550) shows the same02_parse.dagrefusal, so #12550 is not the cause. Bisection in flight: G1 = main + #12686; G2 = main + #12714 + #12702.The seven's walls, each named by execution. (1)
01_tokenizeingest refusal, fixed by #12714. (2)artifact.treeprojection on a match binder: #12506 resolves it (tree F = #12506 + main + #12420 + the 01_tokenize probe,f998a578). (3)found, a lambda parameter of afoldstep, unbound at resolve; per quiet-gull-780 this is body lowering dropping the fold step's Arrow, which #12550 conserves. (4) not yet reached.Run 5 result (b1dc7db)
Stopped at emission, before any test. Native:
EmissionRefused stage=emit: if branches resolve to incompatible types: Primitive(Token) vs Coproduct(Optional) (src/v2/compiler/02_parse.dag:18294-18296). The span is a byte offset, inside #12686's newparse_token_before(the fold's twoifarms are typedTokenvsOptional). Interpreter: every test module importing the parser fails to resolve (the seven,fkc_*,expect_*). Owner: #12686 (the only member changing02_parse.dag). Reported to calm-fox-43. Next pin: #12686's fixed head; the #12628 floor'sUnimportedBareProviderreds are fixed upstream (#124202eb1dd1a178via #12549d0f85560624d, and #1268603ad0791a31).Current pin (run 5, rebuilt from current main after #12432 landed)
b1dc7db3f36e= maincfb3e3667a35+ #1242081c15220aee9+ #12549da0379957f4b+ #12582c1e31b425160+ #12686 (calm-fox-43,empty_eqExpect refusal)b349957e2b61. #12432 is landed (in main).EXCLUDED: #12506
81e7c779970e. It conflicts with main's #12382 named-argument binding plan in04_infer.dag(5 hunks:infer_application_formal_args/infer_judge_application_argument_instantiatingvs #12506'sinfer_transform_argument_targets/application_positional_arity_mismatch_diagnostic), plus 2 test import lines. That is a semantic merge owed by #12506. Re-add when its head merges current main (manager ruling, option A).EXCLUDED with it: #12641 (calm-pike-507's match repair,
4646095b7c48, draft/WIP). It is one probe commit on top of #12506's head, so it cannot be pinned without #12506.The pin-local fixups and composition fixes below are dropped on this pin, because each touches #12506's files. They return with #12506.
Which of the seven's reds would need #12506: none known. The seven's standing red (
resolve_reason_unbound_symbol @ "tokenize") reproduces on main + #12420 alone (D1), with no #12506, and belongs to quiet-hawk-702.empty_eq's cause is #12686's. #12506's reds are all in the small qualification (the 6 grounding reds, and s3 via #12582 × #12506), not in the seven. So a change in the seven after #12506 is re-added is attributable to #12506.Attribution of run 4's reds (by bisection, each tree built and executed)
dre_*): v2 resolve/infer: the dotted-path decision keeps its binding kind, and projection inference stops calling an unretrievable declaration a fieldless receiver #12506 vs current main. They are green on v2 resolve/infer: the dotted-path decision keeps its binding kind, and projection inference stops calling an unretrievable declaration a fieldless receiver #1250681e7c779alone and red on C0 = v2 resolve/infer: the dotted-path decision keeps its binding kind, and projection inference stops calling an unretrievable declaration a fieldless receiver #12506 + main178fb76c(branchsession/eager-newt-412-bisect-c0). v2 resolve/infer: the dotted-path decision keeps its binding kind, and projection inference stops calling an unretrievable declaration a fieldless receiver #12506's main merge stops atb768b0f4318, before v2 infer: lowered type declarations ground — sum formation, nullary payload, binder metadata, alias and opaque formation #12601/v2: every type declaration lowers — plain aliases, bodyless and coproduct declarations leave the parse shell #12574/v2 infer: the facts map is a Node-keyed Map built once, not a list scanned per lookup #12557.2008f931) withinfer_facts_key_conflict @ Node{Conj, [], OccurrenceSynthetic}. That is the refusal catching the synthetic-key collision v2 resolve/infer: the dotted-path decision keeps its binding kind, and projection inference stops calling an unretrievable declaration a fieldless receiver #12506'ssfk_*documents. Dissolution: occurrence projection (MQ PR1 (model): a lowering closes its image; derived nodes mint OccurrenceProjected #12604).tokenizeunbound: main's native resolver frontier. It reproduces on D1 = main + MQ-1 PR-2: a caret symbol lowers to a symbol literal (retire PR-1's refusal) #12420 only (55ed6347). Plain main stops earlier, at the caret refusal. Routed to quiet-hawk-702.Pin-local fixups (owed upstream, dropped when the member's head carries them)
12e2280765e8: pin-local fixup, owed upstream by v2 resolve/infer: the dotted-path decision keeps its binding kind, and projection inference stops calling an unretrievable declaration a fieldless receiver #12506.src/v2/test/claim/callexec/named_call_execution_test.dag's two probes becometest fn, because native discovery refuses a*_test.dagwith none.Composition fixes carried here (each lands with whichever member goes second)
#12549 × #12420: v2 infer: a symbol literal is typed as v2.std.node Symbol (stacks on #12540, #12420) #12549's 5d/5e symbol-literal rows replace MQ-1 PR-2: a caret symbol lowers to a symbol literal (retire PR-1's refusal) #12420's frontier rows.body_let_annotationhelpers take v2 resolve: ResolvedTree carries the SymbolIndex resolution consulted (infer's input carrier) #12432'sResolvedTree.#12506 × main:resolvedis threaded through main'sinfer_formation_facts_from_entries, the named-sum Disj arm, and v2 infer: a symbol literal is typed as v2.std.node Symbol (stacks on #12540, #12420) #12549's literal-payload step.#12582 × #12506: thesfk_*claims asserted the defect, so they now assert the refusalinfer_facts_key_conflictlocated at the key. The raw-entry disagreement is kept as the control. Thefkc_*fixtures carrydenotation: optional_absent().🤖 Generated with Claude Code