Repository navigation
t27b: resolve cross-module use names - the 28 ml specs #8993 unlocked on the reference #9065
Description
What
Master's #8993 taught the t27c test-report (the t27b corpus reference) to resolve cross-module use imports. 28 specs/ml/** specs now PASS the reference and BLOCK on t27b, which still reports the imported names as undeclared:
- 26 x
ExprCall(undeclared fn) - 2 x
ExprIdentifier(undeclared) - 1 x
ExprArrayLiteral(repeat count)
Measured on the t27b lab (branch t27b/stdmem-parity-final, master cc19d1f + #9056, clean corpus sweep, fresh reference cache):
reference_pass 1426 t27b_pass 1398 blocked-on-t27b 28 (all specs/ml/**) crash 0 per-test disagree 0
The 28
activation: elu, gelu, gelu_approx, silu_swish, softmax, tanh; igla_champion_capsule; layers: batchnorm, embedding; loss: binary_crossentropy, contrastive, cross_entropy; optimizer: adagrad, adam, lamb, race_config; pathway/mlp; recurrent: attention_mechanism, bilstm, gru_cell, lstm_cell, lstm_single, rnn_cell; rl: advantage_estimator, ppo_clip_loss, ppo_critic; transformer: encoder_block, positional_encoding.
Scope
Teach t27b's frontend the same cross-module name resolution the reference now has (the constructs live in the specs' own use graphs), then re-sweep: the gate is t27b_pass == reference_pass on the full corpus with 0 per-test disagreements. The parity ledger and sweep harness are in place from #6063.
🤖 Generated with Claude Code
User Scenarios
-
Given the 28 specs in
specs/ml/**that use cross-moduleuseimports, when t27b's frontend resolves those imported names the same way the reference does, then t27b no longer reportsExprCall(undeclared fn),ExprIdentifier(undeclared), orExprArrayLiteral(repeat count)errors for those specs. -
Given a full corpus sweep with the parity ledger from EPIC: t27b runs the whole corpus -- 100% of reference-passing specs, 0 mismatches, experiments on Railway #6063, when t27b is updated with cross-module name resolution, then
t27b_pass == reference_passwith zero per-test disagreements.
Requirements
-
FR-001: t27b's frontend MUST resolve cross-module
useimports by traversing theusegraphs defined in the specs themselves, matching the reference's behavior added in specs/ml tests run: 40 more specs green (10 -> 50 of 61); use resolution and two Zig emitter fixes (refs #8980) #8993. -
FR-002: The resolution MUST handle the three error classes currently blocking the 28 ml specs:
ExprCall(undeclared fn)(26 occurrences),ExprIdentifier(undeclared)(2 occurrences), andExprArrayLiteral(repeat count)(1 occurrence). -
FR-003: The implementation MUST NOT change the reference or the 28 ml specs; it MUST only modify t27b's frontend name resolution.
-
FR-004: After the change, a clean corpus sweep MUST produce
t27b_pass == reference_passwithper-test disagree 0andcrash 0.
Success Criteria
- Running the corpus sweep reports
t27b_pass 1426(matchingreference_pass 1426) withblocked-on-t27b 0andper-test disagree 0— exit 0 - The 28 specs under
specs/ml/**individually pass t27b without undeclared-name errors — 28 tests scripts/tri_loop/t27b.pycompiles and runs the sweep without crashes — exit 0
Boundary
- scripts/tri_loop/t27b.py
- experiments/gfternary-line/resolve.py
Activity