Skip to content

docs: env-profile + validation-gate redesign - #162

Merged
Jammy2211 merged 1 commit into
mainfrom
feature/env-profile-redesign
Jul 16, 2026
Merged

docs: env-profile + validation-gate redesign#162
Jammy2211 merged 1 commit into
mainfrom
feature/env-profile-redesign

Conversation

@Jammy2211

Copy link
Copy Markdown
Collaborator

Summary

Design deliverable for #161 (build-chain campaign #155, Phase 3): docs/env_profile_redesign.md. Docs only — the migration lands as the doc's 8 separately-green steps, each behind its own plan.

The decided invariant (human, 2026-07-16): in mode=release the NumPy path stays the deliberately-validated reference surface for ag/al (option (a) — flip to production-default JAX — was rejected on the brief's over-reach guard plus the measured compile-time constraint from autolens_profiling#71), and the mechanism gets fixed:

  • Derive, don't enumerate: the ~10 hand-listed JAX re-enable folders per repo collapse into one resolver rule (jax_* / *_jax / *_jit path markers). Verified: every existing override matches except database/scrape/ (decided at migration step 4; no exception list).
  • Loud failure: a marker/env mismatch is a validation error at the runner (path+env-decidable — no SimulatorImaging static false-positive class; replaces the loud-warning fix that adversarial review killed).
  • One resolver, defined baseline: run_smoke.py's fork (whose hardcoded env_vars.yaml makes the PR gate structurally unable to see the release profile) imports autobuild/env_config.py; resolution starts from a scrubbed allowlisted base env instead of os.environ.copy().
  • PR-time config validation (validate_env_profiles): both profiles parsed and fully resolved per script in seconds at PR time — the seed incident's ~24h nightly feedback loop becomes ~1min.
  • One name per concept: profile files renamed profile_smoke/release.yaml; the curated smoke_tests.txt keeps the word.

Corrects the session-1 checkpoint's wrong "no DISABLE_JAX pins remain" claim in the verified map, with the error's shape recorded (it is the design's own justification).

Shipped under the human-authorized corrective-PR exception for Heart RED (standing this session). PR-open only; merge stays human.

API Changes

None — documentation only. (The migration's library step — folding al's duplicate PYAUTO_DISABLE_JAX read into af.Analysis — is flagged as its own future plan.)

Test Plan

  • PyAutoBuild suite in the worktree (gate leg).
  • Derivation rule checked against both full override lists; every factual cell in §1 carries its measurement.

Generated by the PyAutoLabs agent workflow.

Design deliverable for the build-chain campaign (#155 Phase 3), built on the
decided invariant (human, 2026-07-16): NumPy stays the validated release
reference for ag/al (option (a) rejected on the over-reach guard + measured
JIT compile cost), and the mechanism is fixed — the hand-enumerated JAX
folder lists become one derivation rule (jax_*/*_jax/*_jit), marker/env
mismatches fail loudly at the runner, one resolver with a scrubbed baseline
replaces the drifted fork whose hardcoded env_vars.yaml blinded the PR gate,
and a PR-time validate_env_profiles check closes the 24h nightly feedback
loop. Eight-step migration, each green on its own; docs only.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

pending-release Merged PR awaiting inclusion in the next release build

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant