Sync: state read as declared, sections with a variable step, traced windows as masks - #18
Merged
Merged
Conversation
- Declare the Fortran to JAX engine and verified recipe - Verify requested JAX gradients and measured improvements independently - Expose bounded numerical observations on finished verdict events - Keep JAX verification private and run its compiled CI checks - Install the runtimes exercised by the general test job - Keep optional JAX recipe tests out of the public export Signed-off-by: 2st <mouseisnotalwaysmouse@outlook.com> Signed-off-by: Qinrun Dai <mouseisnotalwaysmouse@outlook.com> Carried-From: c5d875098cee704eeadb7fc6fa775e5208ed2a12
…af2e7238 ## What this is A Recast training lab loop swept this corpus round after round: each round ran the pipeline, a repair agent worked every failure it found, a regression run verified the exact candidate commit, and the loop promoted what passed onto its own engine branch. Those commits are authored by the repair agent, at an address nobody can sign off in. This pull request is therefore one commit, authored and signed off by the operator who reviewed the branch; the record below is where each part of it came from. - Training loop: `tlp_70e3bdc0553043c09a9bc2e5af2e7238` (converged: round 2: every corpus reference passed without repair) - Corpus: `cmp_onb_9dfebf0c70856c7bc2c45b05` - Rounds: 2 of at most 3 - Engine branch: `train/c21cd1f4e63501bf4d0d129a` at `676fede83fef` - Base: `d7b97c5c60200ab394b81e2572097532c1465193` - Squashed: 1 commit(s) ## Attempts ### 1. `fortran.engine.translation_failure` — round 1 - Agent: the profile's default model, effort the profile's default effort, profile `local.fortran-numpy-engine-repair`, adapter `claude-fix-pool` - Run `agt_5e6028e61abd4bbdbf2032b15a0d1dee` produced commit `676fede83fef` - Changed: `src/recast/fortran/_parse.py`, `src/recast/fortran/frontend.py`, `src/recast/fortran/interface.py`, `tests/test_fortran_companions.py` - Regression: `plr_repair_e5e83866311a4c549a6a5cf9` passed - Promotion: `prm_98c53d7f9690c54f7c905975` merged, merged as `676fede83fef` - Audit: campaign `cmp_onb_9dfebf0c70856c7bc2c45b05`, issue `iss_2e9729b7a0bb4bbb8f39c3cb1d1cbd2f` verifying ### 2. `fortran.engine.translation_failure` — round 1 - Agent: the profile's default model, effort the profile's default effort, profile `local.fortran-numpy-engine-repair`, adapter `claude-fix-pool` - Run `agt_d727fe5d74e748f38623622919bb48eb` produced commit `b9f4c51bdf4d` - Changed: `src/recast/fortran/_parse.py`, `tests/test_fortran_companions.py` - Regression: `plr_repair_7b0226022f4cc7039908db57` failed - Promotion: no promotion recorded - Audit: campaign `cmp_onb_9dfebf0c70856c7bc2c45b05`, issue `iss_2e9729b7a0bb4bbb8f39c3cb1d1cbd2f` verifying ## Review notes - The unsquashed history is on `train/c21cd1f4e63501bf4d0d129a` in the lab's engine control repository; it is not pushed here. - Local checks are the submitter's: the lab does not run this repository's CI. Signed-off-by: 2st <mouseisnotalwaysmouse@outlook.com> Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Carried-From: fa98c14c41b707742abd968dec39aa996d662685
Those repairs read the Fortran 2018 spelling of implicit none, collect a generic's interface-body specifics, and hand a submodule its parent's generics. fftpack is the case it reaches: fftpack_kind is a unit again (ten, not nine), every unit is mechanical, the eight "array of declared type" deferrals are gone, and fftshift, ifftshift and utils end bit-exact. The other eleven cases record exactly what they did before. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014z41WRrJDac7Gi1Wqnc5Hv Signed-off-by: lewisychen <yueqichen.0x0@gmail.com> Carried-From: bca95eb82a9b1aace4436e1d320326fa4eaa27b1
…carried by calling the setter - Private state one public argument-less setter fixes to a constant is carried by calling the setter - A component of a type out of sight is a wildcard for generic dispatch, not a non-integer - A double local parameter set from a default-kind literal holds the single the compiler stores - A flat rewrite's refusal leads the gate's reason, not the wrapper's import - An integer parameter's quotient is integer division whatever the renderer knows of the operands - A pointer module array is guarded with associated, not allocated - A computed actual still says what type it is, and only an unreadable one is a wildcard - Constant state is out of the flat plan's way, not out of the kernel's closure - Constant state refuses what a run can set and a setter can skip - An emitted reference that returns None returned no values, not one - corpus: soil_stress, the ELM shapes behind two regressions this branch had - A pure writer overwrites the variable in its own body and nothing it reaches touches it - An integer parameter's real quotients stay real division - A float cast goes through a runtime shim that casts a tracer and leaves a scalar alone - The branch type-checks: an args tuple annotated, an envelope typed, two module names narrowed - corpus: the three port summaries at this branch's runtime Signed-off-by: lewisychen <yueqichen.0x0@gmail.com> Carried-From: 7cc8aa28fb2f894e43ac9def954cdaab193fae07
…mary names host calls and refusals; clubb_solve carries the stood-in shape A recipe builds its transform with no arguments and hands the stage's config to apply. The translation folded the config's constant_modules into its conventions there and not its stub_modules, and the port asked the factory's conventions -- empty -- whether a companion is stood in, so an operator's stub_modules did nothing: only an extension's factory could name them. effective_conventions folds both lists, for the stand-ins, the use-constants and the stood-in mark alike. The summary carries two lists a port's gate cannot produce: host_calls, the companion calls a kernel leaves on the host, and refused, the kernels the flat rewrite would not spell -- the unit's own and its companions', with reasons. A companion dropped to the host, or refused and replaced by the backend's lowering of the anchor's function, computes the same numbers and passed unseen; five of CLUBB's whole-step companions did for months. Present only where the transform recorded them, so a translation's summary keeps its shape; the three trees' port summaries are regenerated and say [] -- toy_physics has host_calls alone, its backend keeps no refusals. corpus/clubb_solve gains error_code, the stand-in shape CLUBB's is -- a private debug level with an initializer, one public setter, one public function -- and clip_module, a companion the step calls that reads the level inside a traced condition, the way pos_definite_adj does. The frontend gains stood_in_modules for it: a module whose source is in the tree and is compiled, translated and ported like any other, but whose private state the flattener leaves to the module's own declaration -- distinct from stub_modules, whose source the reference does not build. With the lowering as it stood before the stood-in-state fix the committed port summary would read refused: ["clip_module.clip_variance: error_code. clubb_at_least_debug_level_api reads clubb_debug_level, which the plan does not carry"], and the gate would pass all the same; it reads []. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017FiWf283axoKztvZeoo6NK Signed-off-by: lewisychen <yueqichen.0x0@gmail.com> Carried-From: f7d0edb59fc952011619cc78dbbb2f4ab2263267
…s provenance The tree translation and the tree port analyzed each companion with the frontend factory called bare: for the generic Fortran frontend, no constant modules, no stood-in modules and no flattening. A companion function that takes a derived-type object then had no flat plan, so its kernel never existed and the caller's rewrite left the call on the host -- rightly, and unseen, because the CLUBB extension's factory defaults to flattening with its own tables and the gap did not show there. The frontend records the constructor arguments that rebuild it in ``provenance["frontend_config"]`` (``configuration()``); the generic factory takes all of them, ``constant_modules``, ``flatten`` and ``derived_intent_out_as_inout`` included, which it read from no config before; both companion sites rebuild the unit's frontend from the record. The host-call note names the anchor's routine rather than the flat form the port never made, now that a companion can have one. The stood-in test asks for its module through ``stood_in_modules``: with the companion frontend faithful to the unit's, ``stub_modules`` would skip the module's source as designed. Test: the recorded configuration round-trips through the factory. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017FiWf283axoKztvZeoo6NK Signed-off-by: lewisychen <yueqichen.0x0@gmail.com> Carried-From: 2c47aa8bcd2941fff1dbbdfcde0aed5bd6277efa
…s the flat spelling; corpus tree canopy_flat - A tree anchor offers the flat spelling beside the original, and the original is compared through it - canopy_flat: the flattened corpus tree, an object-taking call lifted inside a traced branch, gated under the port recipe Signed-off-by: lewisychen <yueqichen.0x0@gmail.com> Carried-From: 0fd5386011fbfe7a2400af8a513d2bb282f64702
…calar bound before it The shape of CLUBB's fill_holes_smart_window: a hole summed over the layers, a window doubled inside ``do while`` until the mass above the threshold covers it -- the newly covered layers summed into a scalar bound before the loop by a DO loop inside its body -- then spread. At 0fd5386 the port gate fails on it as CLUBB's summary says: ``fill_flat: not lowered by this backend ... flat rewrite refused: while loop body: loop with no carried effects``. With the fix both kernels are bit-exact on every point (180 across 2 subprograms). Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017FiWf283axoKztvZeoo6NK Signed-off-by: lewisychen <yueqichen.0x0@gmail.com> Carried-From: 8fa7a882a28fbf768fb9d67ce4331382588b6218
…dows of either direction are masks - A section stepped by a variable is sliced by the runtime, which reads the step's sign - clubb_solve: fill_window walks a column in the grid's direction, the step a dummy of either sign - canopy_flat: Clip walks a window of the layers in either direction - An INTEGER assigned a use-imported REAL constant converts - canopy_flat and clubb_solve carry the three shapes the fill_holes check found Signed-off-by: lewisychen <yueqichen.0x0@gmail.com> Carried-From: 9d36a20af85189113ffa94375864a1f138fc6504
The published edition's suite failed on both: the frontend-provenance test builds a frontend with `flatten=True` and got the ConfigError that says the flat adapters are not installed, and the tree-anchor test imports its tree from tests/test_flatten.py, a module that edition does not carry. Neither claim is about the core, so both move to tests/test_tree_target.py, where the trees with flat adapters and stand-ins already live. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Signed-off-by: lewisychen <yueqichen.0x0@gmail.com> Carried-From: 14b3b51a942afcffb7ff062a69b422de86294b4f
chenyueqi
force-pushed
the
sync/september-line
branch
from
September 13, 2026 04:09
05733ed to
1007860
Compare
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.
Carried by tools/export sync; each commit names its origin in a Carried-From trailer.