Result: partial Files: crates/nikaia-std/src/tools/emit_reach.nika crates/nikaia-std/src/tools/emit_function.nika crates/nikaia-std/src/tools/emit_core_args.nika crates/nikaia-std/src/tools/emit_state.nika docs/specification/adr/adr-277.md tests/compiler/tests/a_lambda_handed_round_a_cycle_runs.nika tests/compiler/tests/a_lambda_handed_round_a_cycle_runs.stdout tests/compiler/tests/a_recursive_function_hands_a_new_lambda_to_itself.nika tests/compiler/tests/a_recursive_function_hands_a_new_lambda_to_itself.stdout crates/nikaia-std/src/tools/lowered.rs crates/nikaia-std/src/tools/lowered/bounds_interval.rs crates/nikaia-std/src/tools/lowered/bounds_walk.rs crates/nikaia-std/src/tools/lowered/buffers.rs crates/nikaia-std/src/tools/lowered/check_consts.rs crates/nikaia-std/src/tools/lowered/claim_names.rs crates/nikaia-std/src/tools/lowered/comptime_tree.rs crates/nikaia-std/src/tools/lowered/emit_core_args.rs crates/nikaia-std/src/tools/lowered/emit_function.rs crates/nikaia-std/src/tools/lowered/emit_reach.rs crates/nikaia-std/src/tools/lowered/emit_state.rs crates/nikaia-std/src/tools/lowered/fold.rs crates/nikaia-std/src/tools/lowered/foreign.rs crates/nikaia-std/src/tools/lowered/grammar_decode.rs crates/nikaia-std/src/tools/lowered/interpreter.rs crates/nikaia-std/src/tools/lowered/keeps.rs crates/nikaia-std/src/tools/lowered/leaves.rs crates/nikaia-std/src/tools/lowered/ledger_items.rs crates/nikaia-std/src/tools/lowered/maps.rs crates/nikaia-std/src/tools/lowered/prove_terms.rs crates/nikaia-std/src/tools/lowered/prove_text.rs crates/nikaia-std/src/tools/lowered/prover_calls.rs crates/nikaia-std/src/tools/lowered/prover_loops.rs crates/nikaia-std/src/tools/lowered/prover_walk.rs crates/nikaia-std/src/tools/lowered/sharing.rs crates/nikaia-std/src/tools/lowered/tether.rs crates/nikaia-std/src/tools/lowered/throws.rs crates/nikaia-std/src/tools/lowered/type_rules.rs crates/nikaia-std/src/tools/lowered/view_changes.rs crates/nikaia-std/src/tools/lowered/views.rs Commit: lowering: a fn parameter handed round a call cycle is a &dyn Fn (Part of #1023) Body: ADR-277 D11 gains its sentence: a run sync code parameter of a function on a cycle of the call graph is written &dyn Fn. emit_reach’s code_on_a_cycle builds the graph over the functions that run a sync code parameter (only they carry a lambda’s type on; trait-impl methods keep the trait’s shape and are left out) and searches from the function being written. A &dyn parameter handed on unlent is lent once more (&&dyn Fn is a sized Fn for an &impl Fn taker and coerces for a &dyn one), also from a lambda inside the function (walk.dyn_code, keyed by walk.keep_function). In tools, 25 recursive walks (bounds, prover, views, comptime_tree, …) now take &dyn Fn: one indirect call per call of the parameter, the decision’s cost. Part: #1023 Pushed: 90d7e2ad68874083542acd015a0ef64b9285b1a9 Tests: tests/compiler both settings 397 passed (new a_lambda_handed_round_a_cycle_runs, a_recursive_function_hands_a_new_lambda_to_itself; a_trait_method_, a_method_hands_its_callback_to_a_function pass); both new programs failed before the fix (issue probes at 32080dd6: recursion limit); guard set 24 passed; clippy clean; cargo check -p nikaia-std –features compiler clean; lower-std fixpoint; grep “+ Send + Sync” lowered/.rs empty Gate: green Deviation: step 2 not built: its cause is in the checker, outside the brief’s edit scope Found: #1023 defect 2 is the checker’s: check_fields.nika:213 a_lent_parameter matches a call argument to the function’s parameters by name, so a let that shadows a fn parameter reads as the lent parameter and check_references.nika:295 leaves it unlent; probe 2 of the brief, still E0308 Needs: owner decision: allow the fix in check_fields.nika (a_lent_parameter false when the name is bound by a local that shadows the parameter), then step 2 with test a_shadowing_lambda_is_lent; #1023 stays open Changelog: a fn parameter handed round a call cycle is borrowed as &dyn Fn Owner: none Disk freed: scratch binary copy only; project-tests cache absent, disk 6.8G free (83%) Rs2nika: none