Skip to content

Sync: state read as declared, sections with a variable step, traced windows as masks - #18

Merged
chenyueqi merged 10 commits into
mainfrom
sync/september-line
Sep 13, 2026
Merged

chenyueqi merged 10 commits into
mainfrom
sync/september-line

Conversation

@chenyueqi

Copy link
Copy Markdown
Member

Carried by tools/export sync; each commit names its origin in a Carried-From trailer.

second5t and others added 10 commits September 12, 2026 21:45
- 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
chenyueqi merged commit 4cac781 into main Sep 13, 2026
13 checks passed
@chenyueqi
chenyueqi deleted the sync/september-line branch September 13, 2026 04:44
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants